transaction_isolation
设置隔离级别的参数:
transaction_isolation='read-uncommitted|read-committed|repeatale-read|serializable':默认是 repeatable-read,几个值分别代表的含义:
read-uncommitted:读未提交,允许脏读;
read-committed:读提交,不允许脏读,但允许不可重复读;
repeatable-read:可重复读,不允许脏读、不可重复读,但允许幻读;
serializable:串行化,以上都不允许。
- 该参数在 mysql 命令行直接动态修改时使用的参数名称是tx_isolation='repeatable-read',必须有中杠连接并带有引号。
- 该参数在 my.cnf 的[mysqld]标签下使用的参数名称是transaction_isolation=repeatable-read,必须有中杠连接,引号可有可无。
- 该参数也可以使用类似语句 set transaction isolation levelrepeatable read;来间接修改,且不带中杠也不带引号,隔离级别关键字之间是使用空格隔开。
- 动态修改隔离级别时,带 global 关键字的语句表示对后来的会话生效,对当前会话不生效,带 session 关键字的语句表示立即对当前会话生效,不带 global 和 session 关键字的表示对当前会话的下一个事务或者说下一个请求生效。注意:使用 begin 或start transaction 语句显式开启一个事务之后,不能在活跃的事务内更改隔离级别。这些关键字的作用范围与修改配置参数时效果是一样的。
- 全局,会话,动态变量,枚举类型,默认值为 repeatable-read。
- 注意:该参数有个比较尴尬的地方,即在 my.cnf 中只能写作transaction_isolation(这个是 mysqld 的启动选项,但非server system variables),不能写成 tx_isolation(这个是server system variables 但非启动选项),但是在命令行中只能使用 tx_isolation,不能使用 transaction_isolation。