# 事务隔离级别
# 分类
# 读未提交:read uncommitted
概念:
事务A可以读取到事务B未提交的数据
存在脏读现象(Dirty Rread):称读到脏数据
# 读已提交:readcommitted
概念:
事务A只能读取到事务B提交之后的数据
这种隔离级别解决了脏读现象
存在‘不可重复读取数据’问题:在事务开启后,每次读取到的数据可能不一致。比如A开始事务循环读取数据的过程中,B事务不断修改数据并提交,导致A事务在后续的数据读取过程中,数据产生不一致的现象
这种隔离级别是比较真实的数据,每一次读到的数据绝对真实
注意:Oracle数据库默认的隔离级别是: read committed
# 可重复读:repeatable read
概念:
事务A开启后,不管多久,每一次在事务A中读取到的数据都是一致的。即使事务B将数据修改,并且提交了。事务A读取到的数据还是没有发生改变,这就是可重复读
解决了不可重复读的现象
存在幻读现象:每一次读取到的数据都是幻象,不够真实
Mysql默认隔离级别
# 序列化 / 串行化:serializable
概念:
隔离级别最高,效率最低。解决了所有问题
不能并发
# 测试隔离级别
查看变量:
show variables;
通过like 通配符查询
show variables like '%isolation%';
查看隔离级别:
select @@transaction_isolation;
设置全局事务等级
set global transaction isolation level read committed;