MYSQL系列:数据库的事务隔离级别

 

MySQL 的事务隔离是在 MySQL. ini 配置文件里添加的,在文件的最后添加:

transaction-isolation = REPEATABLE-READ

可用的配置值:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE。

#查看隔离级别
select @@tx_isolation;
select @@global.tx_isolation;

 

 

脏读  READ-UNCOMMITTED

最低隔离级别、一个事务未提交前,就可被其他事务读取(会出现脏读、幻读、不可重复读)。

 

幻读 READ-COMMITTED

一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读)

指同一个事务内多次查询返回的结果集不一样。比如同一个事务 A 第一次查询时候有 n 条记录,但是第二次同等条件下查询却有 n+1 条记录,这就好像产生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。

 

可重复读 REPEATABLE-READ

默认级别,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读)。MVCC版本控制。

MYSQL系列:数据库的事务隔离级别_第1张图片

 

序列化 SERIALIZABLE

代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读。

 

你可能感兴趣的:(MySQL)