1、目的:解决因资源共享而造成的并发问题。
2、锁的分类:
2.1操作类型:
2.1.1读锁(共享锁):对同一条数据读操作可同时进行,互不干扰;
2.1.2写锁(互斥锁):如果当前写操作没有操作完毕,则无法进行其他的读操作、写操作。
2.2操作范围
2.2.1表锁:一次性对一张表整体加锁,开销小、加锁快,无死锁,但锁的范围大,容易出现锁冲突,并发性低;
2.2.2行锁:一次性对一行数据加锁,开销大、加锁慢,容易出现死锁;锁的范围小,容易出现死锁;
2.2.3页锁:
例:
mysql> create table tablelock(
-> id int primary key auto_increment,
-> name varchar(20)) engine myisam;
mysql> insert into tablelock(name) values('a1'),('a2'),('a3'),('a4'),('a5');
mysql> commit;
3、加锁语法:
lock table 表1 read/write,表2 read/write ...
查看加锁的表:
mysql> show open tables;
4、给刚才创建的 tablelock表加锁
mysql> lock table tablelock read;
会话:每个session访问表都没问题
试试读操作:
select * from tablelock;
试试修改数据
mysql> alter tablelock set name=‘a55’ where id=5;