IT技术互动交流平台

MySQL事务隔离级别和日志模式组合的分析和总结

作者:IT168 jinguanding  来源:IT165收集  发布日期:2011-11-16 09:24:28

  MySQL的四种事务隔离级别:Read-uncommitted、Read-committed、Repeatable-read、Seriailizable,相信大家都清楚各自异同。但是对于第二类、第三类隔离级别之间的性能区别和应用场景就会容易出现一些理解上的偏差,尤其是熟悉Oracle的技术朋友,为此专门撰写一篇技术文章,引导大家合理地选择这两种事务隔离级别。

  测试环境及名词解释:

  操作系统:CentOS release 5.5 (Final)

  MySQL版本:5.1.40-community-log

  InnoDB版本:build-in

  测试的事务隔离级别:Read-committed(以下简称:RC)、Repeatable-read(以下简称:RR)、日志登记选项(简称:LBO)、STATEMENT-based logging(简称:LBS)、ROW-based format(简称:LBR)

  基于日志复制模式(简称:RBO):STATEMENT、ROW、MIXED

  事务隔离级别和日志模式组合的分析和总结:

  ■ 事务隔离级别为:Read-committed(简称:RC)

  事务安全性:不支持对InnoDB引擎表作DML(DML指:INSERT、UPDATE、DELETE),但是允许对非事务引擎表的数据进行一切操作;

  事务性能:不支持对事务引擎InnoDB表进行操作;

  ● RC与 STATEMENT配置组合

  日志记录格式:所有的变更操作都以基于命令方式登记二进制日志(简称:LBS);

  复制安全性:对于SQL语句中,若存在不确定性的函数,则数据复制存在一致性;

  IO量:无增加;

  ● RC与 MIXED配置组合

  事务安全性:结合InnoDB提供的MVCC功能,可以做到只看见已经提交事务修改后的数据,但是无法确保同一事务内,同一个查询语句二次执行,获得的记录集相同;

  事务性能:会比不提交读隔离级别性能低,但比可重复读隔离级别性能高;

  日志记录格式:所有的变更操作都以基于行模式登记二进制日志(简称:LBR);

  复制安全性:能做到主备数据复制的一致性;

  IO量:所有的DML操作都将转化成基于行模式登记二进制日志,那么会增加大量物理写IO;

  ● RC与 ROW配置组合

  若是事务隔离级别设置为:Read-committed(以下简称:RC),那么无论日志模式(注:binlog_format)设置为:MIXED 或者 ROW,二进制日志都将以ROW模式登记,为此与RC+MIXED配置组合相同,不赘述。

  ■ 事务隔离级别为:Repeatable-read(简称:RR)

  事务安全性:在RC隔离级别优点的基础之上,做到了同一个事务内,同一个查询请求,多次执行,获得的记录集一定相同;

  事务性能:比RC事务隔离级别消耗的资源更多一些,也即性能低一些,但比Seriailizable隔离级别的性能好;

延伸阅读:

Tag标签: MySQL事务隔离   日志模式组合  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规