数据库MVCC中,怎样判断并发事务能否Commit?( 二 )
【数据库MVCC中,怎样判断并发事务能否Commit?】 2. 有办法无锁实现吗?可以,但是这样性能不一定高,首先你要保证:check--\u0026gt;commit是一个原子操作,代价可能比lock还要大。3. 隔离级别是repeatable read 或者 searilization。MVCC解决的重点是读以及保证事务的ACI特性,典型的"log is database"的思想。3.1 在repeatable read隔离级别下:假设1中我们有个读线程,txid为2,那么他的live_transaction_list为:txid:1。此时即使txid:3和txid:4都已经commit: txid:2可见的版本还是txid:1的修改,所以这个RR隔离级下跟这2个事务是否commit没有任何关系。3.2 在searilization隔离级别下:searilization级别下,锁的粒度不会到MVCC entry级别,锁的可能是一个page,就是在上层已经加锁了,这2个事务更没有并发可言了。
■网友
针对dirty write 用不到Serializability级别隔离,只要有row level 的锁就可以了,粒度够细,性能也不会差。不是通用的RDMS的话,可以考虑内存存储,后天持久化,这样你说的这个问题可解。我想题主更期待的应该是无锁解决write skew吧,毕竟dirty write 性能不是问题
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
