自我记录 自我记录。。。(有问题欢迎指出)
脏读,read-uncommitted
事务都可以“看到”未提交事务的执行结果
1、A : 450 开启事务,查值为450
2、B : 450 -> 400 开启事务,修改值为400
3、A : 400 事务内再查,值变成了400
4、B : 回滚,值变回了450,但是A查的还是400,那么A查到的400就是脏数据
不可重复读, read-committed
一个事务在开始时,只能"看见“已提交”事务所做的改变
1、 A:450 开启事务查,值为450
2、 B:450 -> 400 B开启事务,修改值为400,事务未提交
3、 A:450 A查的时候还是450
4、 A:400 B提交事务,A再查,值变成了400
可重复读, repeatable-read
1、 A:400 开启事务
2、 B:400 -> 350
3、 A:400 不管B事务是否已提交,在A的事务内,读出的数据均是400
事务在读取某数据的瞬间(就是开始读取的瞬间),必须先对其加 行级共享锁,直到事务结束才释放;
事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级排他锁,直到事务结束才释放。
串行,serializable
隔离级别强的一批,不过会锁表
本文详细解释了数据库事务的四种隔离级别:脏读(read-uncommitted)、不可重复读(read-committed)、可重复读(repeatable-read)及串行化(serializable)。通过具体的例子展示了不同级别下事务间的交互情况。
1412

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



