mysql 锁和隔离事务

--查询表锁争用情况
show status like 'ord%';
--查看数据库中表的状态,是否被锁;
SHOW PROCESSLIST;

--脏读 读未提交
--A事务读取了B事务修改但未提交的数据 B稍后时候进行了回滚,那么A就发生了脏读

--不可重复读 读不回去了
--A事务在进行相同条件查询的时候,(两次或者两次以上)出现了每次结果不一样,因为在查询期间有其他事务进行了update操作,导致结果不一致


--幻读 读多了
--A事务在进行相同条件查询的时候,因为在查询期间发现记录数不一样了 ,因为进行了insert操作,导致结果不一致

--隔离级别
--1. 1 Read uncommitted 脏读
--2. 2 Read committed 避免脏读 会有重复读和幻读
--3. 4 repeatable read 可重复读 避免不可重复读
--4. 8 serializable 避免幻读 这样性能会低


--1关闭A自动提交
set autocommit =0;
--3开启事务
start transaction;
--4执行更新
update tableA set nane='je' where id='1';
--6回滚
rollback;

--2设置B隔离级别 读到A的未提交的数据uncommitted
--Read uncommitted(脏读)Read committed(不脏读)||repeatable read (重复读)|| serializable(幻读)
set session transaction isolation level Read uncommitted;
--5执行查询 查询结果为je
select * from tableA ;
--7 结果为原来的不是je
select * from tableA ;

猜你喜欢

转载自www.cnblogs.com/simly/p/11669883.html