其他分享
首页 > 其他分享> > 《DDIA》读书笔记:事务

《DDIA》读书笔记:事务

作者:互联网

目录

本文是第七章Transaction部分的读书笔记。

这部分包括的内容为:

个人感觉这部分的亮点在于对 lost update 和 Write Skew and Phantoms 的分析.
我的总结就是3种情况: read-modify-write, read-compare-update, read-compare-insert

ACID

Atomic - 没有中间状态,要么成功,要么失败
Consistency - consistency refers to an application-specific notion of the database being in a “good
state". 从应用的角度要求数据库处于正确的状态
Isolation - concurrently executing transactions are isolated from each other.
Durability - once a transaction has committed successfully, any data it has written will not be forgotten

读已提交

问题:事务内两次相同的读操作可能得到不同的结果,即不可重复读

快照隔离(可重复读)

原则是读和写之间不冲突,通常用MVCC实现。存在的问题: lost update, Write Skew and Phantoms

问题1: lost update. 两个线程同时执行read-modify-write的流程,有一个线程的修改会被另一个线程覆盖掉。例如2个线程同时向一个账户转账200元,转账前账户余额为500元,线程都将更新的值设为700,那么账户的最终余额为700元,丢失了200元

解决

问题2: Write Skew and Phantoms.

发生的情况为read-compare-write,流程如下

具体可以分为read-compare-update和read-compare-insert两种情况

This effect, where a write in one transaction changes the result of a search query in another transaction, is called a phantom

可串行化

实现方法1: 单线程写。例如Redis

实现方法2: Strong strict two-phase locking(SS2PL)。
InnoDB和SQL Server的可串行化隔离级别就用的该方法实现。这种方法不同于快照隔离要求的对同一条记录的读写不冲突,它是读写互斥

实现方法3:Serializable Snapshot Isolation (SSI)。一种乐观的并发控制技术


参考:
Designing Data-Intensive Applications https://book.douban.com/subject/26197294/

标签:事务,快照,读书笔记,read,update,compare,content,线程,DDIA
来源: https://www.cnblogs.com/elimsc/p/15880316.html