MySQL事务隔离级别
MySQL事务
事务隔离级别, 数据库事务的隔离级别有4种,由低到高分别为
Read uncommitted
Read committed [事务更新]
Repeatable read
Serializable
Serializable 序列化 Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
查看事务隔离级别
show variables like 'transaction_isolation';
事务隔离级别设置
//设置read uncommitted级别: set session transaction isolation level read uncommitted; //设置read committed级别:[for update] set session transaction isolation level read committed; //设置repeatable read级别: set session transaction isolation level repeatable read; //设置serializable级别: set session transaction isolation level serializable;
幻读 -> insert
? (前后多次读取,数据总量不一致)
解决方案:
Serializable 序列化 : 传说中的表锁
? Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
不可重复读和幻读到底有什么区别呢?
(1)不可重复读是读取了其他事务更改的数据,针对update操作
解决:使用行级锁,锁定该行,事务A多次读取操作完成后才释放该锁,这个时候才允许其他事务更改刚才的数据。
(2)幻读是读取了其他事务新增的数据,针对insert与delete操作
解决:使用表级锁,锁定整张表,事务A多次读取数据总量之后才释放该锁,这个时候才允许其他事务新增数据。
幻读和不可重复读都是指的一个事务范围内的操作受到其他事务的影响了。只不过幻读是重点在插入和删除,不可重复读重点在修改
Mysql的默认隔离级别是Repeatable read。
相关推荐
DriveCar 2020-09-07
quniMdejiangyou 2020-08-15
silencehgt 2020-07-04
zhanbuquan 2020-07-04
liaomingwu 2020-06-25
zhanbuquan 2020-06-21
vincen 2020-06-10
zjx0 2020-05-20
愿天下再无BUG 2020-05-16
MissFuTT 2020-05-11
好记忆也需烂 2020-05-10
wenjieyatou 2020-05-06
bluet00 2020-05-05
jiong 2020-04-19
逍遥斩舞 2020-04-17
achiverhai 2020-04-16
zhengsj 2020-03-28
lpfvip00 2020-06-25
variab 2020-06-13
sunysh00 2020-06-11
DriveCar 2020-06-09
sofast 2020-06-03
weikaixxxxxx 2020-05-30
neweastsun 2020-05-27
sunysh00 2020-05-25
pengpengflyjhp 2020-05-14
inhumming 2020-05-10
silencehgt 2020-05-09