开发者社区> 问答> 正文

数据库事务隔离级别的选择

首先感谢进来看的各位,然后有几个问题请教大家(¯﹃¯)
1.为什么ORACLE只支持READ COMMITTED和SERIALIZABLE(Repeatable Read有严重的缺点?)
2.大部分数据库的默认级别都是READ COMMITTED为什么mysql却选择Repeatable Read
3.大家使用spring的话使用的是哪种事务管理方式?为什么要采用这种方式?
4.如何根据业务确定应该采用那种级别的隔离级别
5.出BUG了?

展开
收起
蛮大人123 2016-03-09 19:04:40 4677 0
2 条回答
写回答
取消 提交回答
  • MySQL内核开发者, 《高性能MySQL 第三版》译者之一,活跃于MySQL社区,BugList,etc...

    RR级别在MySQL里意味着在一个事务活跃期间,快照会一直打开,这可能会导致Undo/垃圾数据不能及时清理,Undo空间膨胀。没啥业务上必须的理由,尽量用RC

    2019-07-17 18:56:38
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    目前说的四种隔离级别是SQL92标准,各个数据库的具体实现不同导致了默认和推荐的隔离级别不同,毕竟现在的数据库都是MVCC实现的,早已不是传统的锁模型了。目前所谓的四种隔离级别其实是对历史SQL标准的妥协,例如Mysql的Repeatable Read其实是Snapshot Isolation,它不允许幻读而且并发下需要用户自己加锁。
    具体用什么,每种隔离级别能做到什么,请看官方手册,不要看教科书或者百度的东西。相信看完你也差不多知道要用哪个了。

    2019-07-17 18:56:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载