mysql-事物隔离级别

– 全局事物隔离级别
SELECT @@global.tx_isolation;
– 当前事物隔离级别
show variables like ‘%tx_isolation%’;
– 设置读未提交
set GLOBAL tx_isolation=‘READ-UNCOMMITTED’;
set GLOBAL tx_isolation=‘READ-COMMITTED’;
– 关闭mysql的自动提交
set GLOBAL autocommit=0;
SHOW VARIABLES LIKE ‘autocommit’;

读未提交

set GLOBAL tx_isolation=‘READ-UNCOMMITTED’;
当前读,不管事物有没有提交,读取得都是最新事物的数据

读已提交

set GLOBAL tx_isolation=‘READ-COMMITTED’;
事物一:
开启事物
START TRANSACTION;
UPDATE xx_t h set h.name=‘xx1’ where h.id=2;
事物二:
SELECT * from xx_t; – 可以成功
UPDATE xx_t h set h.name=‘xx2’ where h.id=2; 被阻塞直至超时或者事物一提交
幻读case:
事物一,二开启事物
START TRANSACTION;
事物一:
SELECT * from xx_t; – Id(1,2,4)
可以查到(1,xx1),(2,xx2),(4,xx3)
事物二:
INSERT INTO xx_t VALUES(3,‘hxx2’);
commit;
事物一:
SELECT * from xx_t; – Id(1,2,4)
可以查到同一个事物中(1,xx1),(2,xx2),(3,xx2) ,(4,xx3)
可以看到事物一两次读取的值不一样,出现了幻读

可重复读

set GLOBAL tx_isolation=‘REPEATABLE-READ’;
可以解决上面读已经提交中的幻读问题,用的是next-lock+Mvcc机制。
REPEATABLE-READ级别下只要当前事物没有提交,都是快照读,读取的不是最新数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值