0. 什么是锁?
锁的分类:
对数据的操作粒度分: 表锁 行锁
什么是读锁(共享锁)? 针对同一份数据,多个读操作可以同时进行而不会相互影响。
什么是写锁(排它锁)? 当前写操作没有完成前,它会阻断其他写锁和读锁。
锁的应用场景:
表锁的特点:
1. 表锁偏读 ,行锁偏写。
create table mylock(
id int not null primary key auto_increment,
name varchar(20)
)engine myisam;
show TABLES ;
INSERT INTO mylock(name) values ('a');
INSERT INTO mylock(NAME) VALUES ('b');
INSERT INTO mylock(NAME) VALUES ('c');
INSERT INTO mylock(NAME) VALUES ('d');
INSERT INTO mylock(NAME) VALUES ('e');
select * from mylock ;
lock table book write ;
show open tables
解除锁:
unlock tables ;
session 添加读锁
lock table mylock read ;
由于读锁是共享锁所以session2 也可读。
3.操作流程:读锁的影响
session1 查询未加锁的表 book 不能读。原因是当前的栈没有清除。
3. 写锁的影响
4.读写锁结论:
5.记住这句结论:
面试题: mysql 读写锁有什么区别?
读锁会阻塞写,不会阻塞读,写锁会阻塞读和写。
6.表锁分析