丢失修改问题在什么情况下不影响数据库的一致性?在什么情况下影响数据库的一致性?

看到这个问题的第一反应,影响数据库的并发一致性不是有四种吗?

丢失修改、读脏数据、不可重复读、幻影读

怎么问什么时候影响,什么时候又不影响?

我也一脸懵。

下面说说我的看法。

假设有事务 T1、T2,数据库中数据 A=100;

t1 时刻:T1 读取 A=100;

t2 时刻:T2 读取 A=100;

t3 时刻:T1修改A=A-20,写入数据库(此时,数据库中A=80);

t4 时刻:T2修改A=A-10,写入数据库(此时,数据库中A=90);

用图表示如下:

最终,A=90,显然数据是错误的(正确值 A=70),发生了数据丢失,所以,就影响了数据库的一致性。

那什么时候不影响呢?

我只能想到极端例子。

如果T1的修改是无用功呢?

如下图所示

最后的结果A=90,显然是正确的,这样的丢失修改就没有影响数据库的一致性;

这些极端的例子还有很多,不再赘述。

换一种思路,我们给事务加上排它锁,如下图:

这样,丢失修改就解决了,进而也就不影响数据库的一致性;

另外,

分别执行不同的事务对象,并行性都没有了,就更不会影响数据库的一致性了。

丢失修改与数据库的一致性相关推荐

  1. 事务(ACID)、并发一致性问题(丢失修改、读脏数据、不可重复读、幻影读)、封锁(封锁粒度、类型、协议、MySQL 隐式与显示锁定)

    1. 事务 1.1 概念 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚. 1.2 ACID 1.2.1  原子性(Atomic ...

  2. 数据库并发一致性的问题

    在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性问题. 使用隔离级别来防止产生的并发一致性问题 1)丢失修改 2) 读脏数据 3)不可重复读 即每次读取的结果可能不一致  4)幻影读 举个 ...

  3. 修改mysql数据库名方法_安全快速修改Mysql数据库名的5种方法

    1. RENAME DATABASE db_name TO new_db_name 这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了. 据说有可能丢失数据.还是不要用的好 ...

  4. 缓存与数据库的一致性:先操作缓存还是先操作数据库?

    数据缓存 在我们实际的业务场景中,一定有很多需要做数据缓存的场景,比如售卖商品的页面,包括了许多并发访问量很大的数据,它们可以称作是是"热点"数据,这些数据有一个特点,就是更新频率 ...

  5. 两次被裁之后,我终于解决了数据库缓存一致性问题

    一 我是一名毕业两年的程序员. 算上实习,工作三年了,正是一个程序员的黄金时代,这让我普通而自信. 但是从实习期,我就被辞退两次了. 今天是我的又一场面试,而且是大厂面试.我要一洗前耻,证明自己. 好 ...

  6. 共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据...

    作者:T-Birds blog.csdn.net/weixin_36634753/article/details/90815755 共享锁(S锁): 又称为读锁,可以查看但无法修改和删除的一种数据锁. ...

  7. 服务器数据库密码修改了,服务器密码修改后数据库

    服务器密码修改后数据库 内容精选 换一换 将GaussDB(DWS)提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用.配置数据源需要配置"odbc.ini&qu ...

  8. 快狗打车CTO沈剑:数据库架构一致性最佳实践

    本文根据沈剑在2018年10月18日[第十届中国系统架构师大会(SACC2018)]现场演讲内容整理而成. 讲师介绍: 沈剑,快狗打车CTO,互联网架构技术专家,"架构师之路"公众 ...

  9. 三种方式修改 MySQL 数据库名

    原文:三种方式修改 MySQL 数据库名 在 Innodb 数据库引擎下修改数据库名的方式与 MyISAM 引擎下修改数据库的方式完全不一样,如果是 MyISAM 可以直接去数据库目录中 mv 就可以 ...

最新文章

  1. 为什么使用依赖注入?
  2. C语言结构联合位字段知识体系总结大学霸IT达人
  3. 贪心算法解决跳马问题_算法浅谈——怪盗基德的珠宝选择问题与贪心算法
  4. ftp的主动模式(port)与被动模式(PASV)
  5. unity怪物攻击玩家减血_热血传奇:游戏里要千万小心的小怪,玩家稍有不慎就要吃大亏...
  6. python 基础 列表
  7. NiFi导出自己模板和导入别人模板
  8. 安装Visual Studio 2005 SP1时遇到1718错误
  9. 快速行进算法(fast_marching_kroon)的matlab代码
  10. 百度搜索大数据:“摆摊技巧”搜索热度暴涨655%;中国电信:将逐步关闭3G网络业务;IntelliJ IDEA新版发布|极客头条...
  11. 在文件保存中 os.getcwd() os.listdir() os.makedirs() os.mkdir() xx.join() ... 等函数 的使用介绍...
  12. Levenberg-Marquardt算法简介和C++实现
  13. 豆瓣 音乐和读书的搜索页的 window.__DATA__ 的解密
  14. Vs2010激活 系统延长期限
  15. Jdk8 中文 api(百度网盘免费下载)
  16. 四元数、欧拉角、旋转矩阵、旋转向量之间的转换
  17. kylin build过程详解
  18. Eclipse中LogCat打印出错信息分析
  19. Linux学习笔记(管道)
  20. vue-router 判断是否登陆,未登录跳转登陆页面

热门文章

  1. 高数笔记(十六):无条件极值,条件极值(拉格朗日乘数法),最值求法,二元函数的泰勒公式
  2. 5G融合行业专网解决方案分析与研究
  3. php 仿微信朋友圈,HTML5仿微信聊天界面和朋友圈代码
  4. L1-054 福到了 (15分)(C语言)
  5. [bzoj3203][SDOI2013]保护出题人
  6. 高等数学(下)曲线积分与曲面积分
  7. 数据分析之1——淘宝文胸商品评论数据可视化
  8. python将一个列表赋值给另一个列表_将一个列表分配给另一个
  9. 树讲解——紧急集合(lca)
  10. 神奇的css(动态水滴)