SQL 锁机制
表锁
- 读锁(共享锁):对同一个数据,多个读操作可以同时进行,互不干扰
- 写锁(互斥锁):如果当前写操作没有完毕,则无法进行其他操作
操作范围:
- 表锁:一次对整个表加锁,MyISAM存储引擎使用表锁。开销小、加锁块、无死锁。容易发生锁冲突,并发度低。
- 行锁:一次对一条数据加锁,InnoDB使用行锁,开销大、加锁慢、容易出现死锁。锁范围小,并发度高,不易发生锁冲突。
读锁
会话:每一个访问数据的dos命令行、数据库客户端工具,都是一个会话。
会话0: 对表加读锁
lock table 表名 read;
unlock tables;