根据SQL标准,可重复读取应防止模糊读取和脏读取,而可序列化也应防止幻影读取。
根据MySQL文档
默认情况下,InnoDB在可重复读取事务隔离级别进行操作。在本例中,InnoDB使用下键锁进行搜索和索引扫描,这可以防止幻影行(参见14.2.2.5节,“使用下键锁定避免幻影问题”)。
因此,如果可重复读取也可以阻止幻影读取,那么可序列化提供的回报是什么?
是可序列化保护不受写斜或读倾斜和可重复读取的影响吗?
发布于 2015-10-14 06:04:40
答案也可以在mysql文档中找到,引用如下:
此级别类似于可重复读取,但InnoDB隐式地将所有普通SELECT语句转换为选择.如果禁用自动提交,则锁定共享模式。如果启用了自动提交,则SELECT是它自己的事务。因此,它已知为只读,如果作为一致(非锁定)读取执行,则可以序列化,并且不需要为其他事务阻塞。
使用两阶段锁定实现时,可序列化的事务调度防止读和写倾斜.这就是它在Server上使用锁定的工作方式,或者使用可序列化快照隔离在PostgreSQL上的工作方式。
如果在正在读取的任何资源上获得共享锁,那么也可以防止读斜和写斜。
https://stackoverflow.com/questions/33117562
复制相似问题