首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可重复读取和可序列化的MySQL InnoDB实现之间的实际区别是什么?

可重复读取和可序列化的MySQL InnoDB实现之间的实际区别是什么?
EN

Stack Overflow用户
提问于 2015-10-14 05:50:53
回答 1查看 664关注 0票数 4

根据SQL标准,可重复读取应防止模糊读取和脏读取,而可序列化也应防止幻影读取。

根据MySQL文档

默认情况下,InnoDB在可重复读取事务隔离级别进行操作。在本例中,InnoDB使用下键锁进行搜索和索引扫描,这可以防止幻影行(参见14.2.2.5节,“使用下键锁定避免幻影问题”)。

因此,如果可重复读取也可以阻止幻影读取,那么可序列化提供的回报是什么?

是可序列化保护不受写斜或读倾斜和可重复读取的影响吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-14 06:04:40

答案也可以在mysql文档中找到,引用如下:

此级别类似于可重复读取,但InnoDB隐式地将所有普通SELECT语句转换为选择.如果禁用自动提交,则锁定共享模式。如果启用了自动提交,则SELECT是它自己的事务。因此,它已知为只读,如果作为一致(非锁定)读取执行,则可以序列化,并且不需要为其他事务阻塞。

使用两阶段锁定实现时,可序列化的事务调度防止读和写倾斜.这就是它在Server上使用锁定的工作方式,或者使用可序列化快照隔离在PostgreSQL上的工作方式。

如果在正在读取的任何资源上获得共享锁,那么也可以防止读斜和写斜。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33117562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档