首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL InnoDB如何实现未提交的读隔离级别

MySQL InnoDB如何实现未提交的读隔离级别
EN

Stack Overflow用户
提问于 2015-10-19 20:37:47
回答 1查看 713关注 0票数 3

Oracle不允许脏读取,因此甚至不允许从JDBC设置未提交的读。

当选择Read时,PostgreSQL也会退回到Read。

SQL Server定义了一个未提交的读取隔离级别,因为它的并发控制模型基于锁定(除非切换到两个快照隔离级别),因此它可能是避免对不需要严格一致性的报表进行锁定所带来的性能优势的唯一数据库。

InnoDB也在使用MVCC,但与Oracle和PostgreSQL不同,它允许脏读取。为什么会这样呢?直接使用最新版本而不是从回滚段重新构建上一个版本有什么性能优势吗?回滚段查询时间是否恢复到需要允许脏读取的密集过程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 21:25:05

我知道的主要优点是,如果您的所有会话都是未提交的,那么家务管理(清理撤消)将永远不会被阻止,等待旧的会话。

如果不需要为未提交的读事务本身创建读视图结构(示例),可能还会有其他一些性能提高,但我本人还没有证实这一点。一般来说,这不是InnoDB团队针对优化所针对的隔离级别。

编辑:在性能方面,从展开回滚段,是的,它有可能是缓慢的,通过许多修订。AFAIK --这是一个简单的链接列表,可能需要许多遍历。与PostgreSQL进行比较是很困难的,因为体系结构(mysql )是非常不同的。一般来说,当重新定位是“逻辑上只有+适合工作集”时,撤销就能正常工作;也就是说,它是在内存中执行的,但是在需要物理IO之前就已经清理过了。

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

https://stackoverflow.com/questions/33223460

复制
相关文章

相似问题

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