表级锁:特点开销小、加锁快、锁定力度越大、发生所冲突的概率越高、并发度越低。
表读锁(共享锁):允许其它事务进行读取操作、不允许其它事务进行写操作。
表写锁(独占锁):不允许其它事务对该表进行任何操作、必须等表写锁结束。
说明一:InnoDB在必要情况下使用表锁、注意使用行锁来实现多版本并发控制MVCC、它能更好的并发性能和更少的锁冲突。
说明二:MyISAM表的读操作、会自动加上读锁、对MyISAM表的写操作、会自动加上写锁。因为不支持事务还要保证数据的一致性。
发生表级锁的命令:
alter table
drop table和truncate table
lock tables
上机演示:
A窗口:
lock tables t1 write;
lock tables t2 read;
lock tables t1write, t2 read;
lock tables person write;
unlock tables;
B窗口:
#阻塞
select * from person;