参考答案
MySQL支持这三种级别的锁:页级、表级、行级。
- 页级的典型代表引擎为BDB。
- 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。
- 行级的典型代表引擎为INNODB。
在实际应用中,使用最多的是行锁。
1. 行级锁
- 当很多连接分别进行不同的查询时减小LOCK状态。
- 如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。
- 比页级锁和表级锁要占用更多的内存。
- 进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。
- 容易出现死锁。
2. 写锁
- 如果表没有加锁,要对其加写锁定。
- 否则,把请求放入写锁队列中。
3. 读锁
- 如果表没有加写锁,要加一个读锁。
- 否则,把请求放到读锁队列中。
当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。
以上,是MySQL面试题【MySQL支持哪三种级别的锁】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—