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)的数据。两次读取返回的记录数不一样。