MySQL支持四种事务隔离级别,可通过SET SESSION、SET GLOBAL或START TRANSACTION设置,合理配置可避免脏读、不可重复读和幻读问题。
在 MySQL 中设置事务隔离级别可以通过全局或会话级别进行配置,也可以在事务开始前指定。事务隔离级别决定了事务之间的可见性和并发行为,合理设置可以避免脏读、不可重复读和幻读等问题。
查看会话级别隔离级别:
SELECT @@tx_isolation;查看全局隔离级别的命令(MySQL 8.0 之前):
SELECT @@global.tx_isolation;MySQL 8.0 及以上版本使用:
SELECT @@transaction_isolation;1. 设置当前会话的隔离级别:
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;该设置只影响当前客户端连接,断开后失效。
2. 设置全局隔离级别:
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;此设置会影响之后所有新建立的会话,已存在的会话不受影响。
3. 在事务中临时指定隔离级别:
START TRANSACTION;这种方式仅对当前事务生效。
基本上就这些,设置隔离级别不复杂但容易忽略作用范围。