您的位置:宽带测速网 > mysql教程 > RR与RC隔离级别下MySQL不同的加锁解锁方式有哪些

RR与RC隔离级别下MySQL不同的加锁解锁方式有哪些

2025-06-24 08:04来源:互联网 [ ]


| RC与RR隔离级别下MySQL不同的加锁解锁方式


    MySQL5.7.21

    数据准备

      确认隔离级别

        同时开启两个会话,按下图的流程开始操作。

        3.半一致读semi-consistent read

        3.1半一致读发生条件

          innodb_locks_unsafe_for_binlog默认为off。

          如果设置为1,会禁用gap锁,但对于外键冲突检测(foreign-key constraint checking)或者重复键检测(duplicate-key checking)还是会用到gap锁。

          启用innodb_locks_unsafe_for_binlog产生的影响等同于将隔离级别设置为RC,不同之处是:

          1)innodb_locks_unsafe_for_binlog是全局参数,影响所有session;但隔离级别可以是全局也可以是会话级别。

          2)innodb_locks_unsafe_for_binlog只能在数据库启动的时候设置;但隔离级别可以随时更改。
          基于上述原因,RC相比于innodb_locks_unsafe_for_binlog会更好更灵活。

          启用innodb_locks_unsafe_for_binlog还有以下作用:

            环境准备

              开始操作

              注:过程现象满足RR隔离级别,也符合设置innodb_locks_unsafe_for_binlog=ON的情况。因为前面所讲的启用innodb_locks_unsafe_for_binlog会产生作用1与作用2,所以整个加锁与解锁情况与RC隔离级别类似。