事务隔离性和产生的数据问题笔记

2020-07-07  本文已影响0人  天之見證

事务隔离性和产生的数据问题笔记

事务之间由于隔离性的原因,会造成,也只有3种数据影响

1. 两个事务之间的相互影响

lost_update-dirty_read_ur.PNG

完整版:

lost_update-dirty_read_ur2.PNG

以上2个截图来自 Transaction Processing Concepts and Techniques

2. 3种数据问题及其原因

问题类型 原因 事务隔离级别
更新丢失(Lost Update) T1写的数据被T2覆盖掉了 任何级别都不会出现这种情况,但在实际应用中由于多个事务串联/其他,会导致这种情况
脏读(Dirty Read) T1读到T2未提交的数据 Read-Uncommitted
不可重复读(Unrepeatable Read) T1读到T2提交的数据,但是读了2次发现不同 Read-Committed

3. 总结

以上仅仅只是在2个事务层面去分析造成的数据问题, 但已经是完备的了, 囊括了所有可能出现的情况, 笔者以自己的理解做如下整理:

  1. 要出现上面的问题,必须是有一个写事务
  2. 要出现上面的问题,肯定是数据时间跨度上出现了重叠
  3. 脏读和不可重复读二者在于是否读到的数据是提交的
  4. 就上面3中问题,有2种是以读为重点的

ref:

  1. Transaction Processing Concepts and Techniques
  2. MySQL技术内幕 InnoDB存储引擎 第2版 (6.5 锁问题)
上一篇 下一篇

猜你喜欢

热点阅读