select你知多少
Updated:
基本概念
什么是一致性非锁定读
select,不加锁的读
什么是一致性锁定读
select xx for update , 加锁的读。
读取的是最新的数据什么是幻影读
同一个事务中,两次一致性锁定读得到的结果不一样,说明产生了幻影读
可见性测试一( 针对 一致性非锁定读 )
- set global tx_isolation=’READ-COMMITTED’
事务一: begin; select * from lc
|
|
事务二:
|
|
事务一:
|
|
总结: RC模式,一致性非锁定读,是可以看见已经提交的事务的,所以RC模式是可提交读。
同理: RR模式,一致性非锁定读,是不可以看见已经提交的事务的,所以RR模式是可重复读。
可见性测试二( 针对 一致性锁定读 )
- set global tx_isolation=’READ-COMMITTED’
事务一: begin; select * from lc
|
|
事务二:
|
|
事务一:
|
|
- set global tx_isolation=’REPEATABLE-READ’
事务一: begin; select * from lc
|
|
事务二:
|
|
事务一:
|
|
总结: RC模式,同一个事务中,执行多次一致性锁定读,得到的结果不一样。所以RC模式存在幻影读的现象。
同理: RR模式,同一个事务中,执行多次一致性锁定读,得到的结果一样。 所以RR模式不存在幻影读的现象。
原理: 产生幻影读的原理,跟gap lock & next key lock 相关,如果想知道什么是gap lock & next key lock,且听下回分享