深入理解事务
ACID的含义
- 原子性
- 一致性
- 隔离性
- 持久性
弱隔离级别
读-提交
提供两个保证:
- 读数据库时,只能看到已成功提交的数据(防止“脏读”)
- 读数据库时,只能覆盖已成功提交的数据(防止“脏写”)
实现读-提交
- 防止“脏读”:对于每个待更新的对象,数据库都会维护新、旧值。在事务提交前,别的事务只能读取到旧值(多版本并发控制)
- 防止“脏写”:通过行级锁来实现,必须要要拿到锁的请求才可以修改
快照级别隔离与可重复度
在一个事务内保证多次对同一数据的读取是一致的。
实现快照级别隔离
MVCC 多版本并发控制
防止更新丢失
一个事务读取到某个值之后进行一定的运算,再把新值写到数据库中,在写库之前别的事务可能已经提交了新值的写入,这种情况下会把这个事务的值给覆盖了。
原子写操作
比如 set a = a+1
显示加锁
只有一个事务进行写数据
原子比较和设置
CAS
深入解析ACID原则与数据库事务隔离机制
本文详细介绍了事务的ACID特性,包括原子性、一致性、隔离性和持久性。重点讨论了读-提交策略、防止脏读和脏写的方法,以及快照级别隔离和MVCC的实现。同时提及了原子写操作和CAS(对比和交换)等概念。

被折叠的 条评论
为什么被折叠?



