当用户访问量增进时,数据库往往是一个体系的机能瓶颈,但不光光是机能瓶颈,数据平安也会随之显现,这时候锁机制就异常有必要。
并发形成的数据平安题目重要分为3个方面:脏读、幻读、不可重复读
一. 脏读
脏读就是一个事件读取到了另一个事件未提交的数据。
时间线 事件1 事件2 1 begin; 2 select * from lock where id = 1; 3 begin; 4 update lock set name='dirty'; 6 select * from lock where id = 1; 7 commit; commit;
二. 幻读
幻读就是一个事件读到了另一个事件insert的数据
时间线 事件1 事件2 1 begin; 2 select * from lock where id > 1; 3 begin; 4 insert lock select 2; 5 commit; 6 select * from lock where id > 1; 7 commit;
三. 不可重复读
不可重复读就是屡次读取一致数据返回的效果不一致。同脏读差别,这是读取已提交的数据;同幻读也差别,这边是更新数据,幻读是插进去数据。
时间线 事件1 事件2 begin; select * from lock where id = 1; begin; update lock set name='non-rr'; commit; select * from lock where id = 1; commit;
MySQL经由过程对事件的断绝来处理以上三种题目
共有4种断绝级别
断绝级别 脏读 幻读 不可重复读 未提交读(RUC) 是 是 是 已提交读(RC) 否 是 是 可重复读(RR) 否 是 否 可串行化 否 否 否
MySQL经由过程锁机制来完成事件的断绝
锁的分类以下
以上就是MySQL中锁的必要性及分类引见的细致内容,更多请关注ki4网别的相干文章!