事务的隔离级别说明
概念: 多个事务之间隔离的,相互独立的,但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别可以解决这些问题
存在的问题
1.脏读: 一个事务, 读取到另一个事务中没有提交的数据
2.不可重复读(虚读): 在同一事务中,两次读取到的数据不一样
3.幻读: 一个事务操作(DML)查询数据表中所有记录, 另一个事务添加了一条数据,则第一个事务查询不到自己的修改
事务的隔离级别
-
read uncommitted 读未提交
产生的问题: 脏读,不可重复读,幻读 -
read committed 读已提交
产生的问题: 不可重复读, 幻读
3.repeatable read 可重复读(mysql默认)
产生问题: 幻读
4.serializable : 串行化
可以解决所有的问题
注意:隔离级别从小到大安全性越来越高, 但是效率越来越低
数据库查询隔离级别
select @@tx_isolation; 8.0版本之前
select @@transaction_isolation; 8.0版本后
数据库设置隔离级别
set global transition isolation level 级别字符串;