mysql事务隔离级别

简单记录下mysql事务的几种事务隔离级别中,有关脏读,不可重复读,幻读等。

查看mysql事务隔离级别

SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

修改mysql事务隔离级别

语法为:

SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL level

level: {
​     REPEATABLE READ
   | READ COMMITTED
   | READ UNCOMMITTED
   | SERIALIZABLE
}

设置全局隔离级别

set global transaction isolation level read committed;

设置当前会话的隔离级别

set session transaction isolation level read committed;

SET GLOBAL tx_isolation='REPEATABLE-READ';
SET SESSION tx_isolation='SERIALIZABLE';

mysql数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable

脏读

即读取到的数据是脏的,比如A事务读取了B事务还未提交的数据,这时候B事务出错或回滚了,那么A事务读的数据就是脏的。

不可重复读

多次读取同一条数据有可能返回不一样,比如A事务读取到了B事务更新的数据(update),造成前后两次数据不一样。

幻读

如A事务读取到了B事务新增(insert)的数据。两次读取返回的记录数不一样。

原文地址:https://www.cnblogs.com/smartrui/p/11889862.html