一、锁的作用
为数据加锁,主要是防止数据资源的争抢,同时可以避免高并发
二、锁的分类
1、从对数据的操作类型分类
读锁(共享锁 in share mode):针对同一份数据,多个操作可以同时进行,互不影响
写锁(排它锁 for update):当前写操作没有完成,不允许其他读锁或写锁对数据进行操作
2、从对数据操作的力度来分类
表锁(MYSAM存储引擎):锁住整张表,发生锁冲突的几率很大,并发低
行锁:锁住数据的某一行
二、锁操作
1、创建数据表
CREATE TABLE testlock(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20)NOT NULL
)ENGINE=MYISAM;
2、插入数据
INSERT INTO testlock(`name`) VALUES('a');
INSERT INTO testlock(`name`) VALUES('b');
INSERT INTO testlock(`name`) VALUES('c');
INSERT INTO testlock(`name`) VALUES('d');
3、加锁和解锁
show opren tables ----查看表有没有被锁住
为表加锁 lock table tablename read,tablename write
lock table testlock read,test write;
释放锁:unlock tables
4、在MYISAM引擎下加读锁的情况
对testlock表加了读锁,在session1和session2下都可以对数据进行查询
2、session1加了读锁后情况
a、不允许session1修改自己
b、不允许session2修改表数据,session2等待锁的释放
c、session1释放了锁后,session2修改数据成功
3、session1加了lock后,不可以操作本库中其他的锁
4、session1加写锁的情况