mysql 查看与修改隔离级别

1.mysql 所有隔离级别

未提交读(Read Uncommitted):
  定义:事务可以读取其他未提交事务的更改。
  问题:可能导致脏读(Dirty Read)。
  适用场景:对数据一致性要求不高的场景。

提交读(Read Committed):
  定义:事务只能读取其他已提交事务的更改。
  问题:避免了脏读,但可能导致不可重复读(Non-repeatable Read)。
  适用场景:大多数数据库系统的默认隔离级别,如 Oracle。

可重复读(Repeatable Read):
  定义:在同一事务中多次读取相同数据时,结果一致。
  问题:避免了脏读和不可重复读,但可能导致幻读(Phantom Read)。
  适用场景:MySQL 的默认隔离级别,适用于大部分应用。

可串行化(Serializable):
  定义:最高的隔离级别,事务按顺序逐个执行,完全隔离。
  问题:避免了脏读、不可重复读和幻读,但并发性能最差。
  适用场景:对数据一致性要求极高的场景。

2.mysql 隔离级别查看

mysql 5.7以前 
  查看当前会话隔离级别 select @@session.tx_isolation; 或 select @@tx_isolation;
  查看系统全局隔离级别 select @@global.tx_isolation;

mysql 5.7以后
  查看当前会话隔离级别 select @@session.transaction_isolation; 或 select @@transaction_isolation;
  查看系统全局隔离级别 select @@global.transaction_isolation;

3.修改

  set [session | global] transaction isolation level [read uncommitted | read committed | repeatable read | serializable];
posted @ 2024-06-13 15:58  flqa  阅读(181)  评论(0)    收藏  举报