为什么MySQL默认使用RR隔离级别?( 二 )


除了设置默认的隔离级别外,MySQL还禁止在使用statement格式的binlog的情况下,将事务隔离级别设置为READ COMMITTED 。
一旦用户主动修改隔离级别,尝试更新时,会报错:
ERROR 1598 (HY000): Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'因此,我们现在明白了为什么MySQL选择Repeatable Read作为默认的数据库隔离级别了,实际上是为了与历史上那种statement格式的binlog保持兼容性 。




推荐阅读