之前使用oracle的时候通常情况下知道的只有行锁和表锁。
2. 表锁是锁定某张表。
除此之外,还有如下这些锁:
3. 数据库锁:就是锁定整个库,通常情况下是在数据迁移的时候使用。
4. 页级锁:这个是介于行级锁和表级锁之间的锁,锁定一页的数据。一次锁相邻的一页数据。
从锁的类别上可以分为共享锁和排他锁:
1. 共享锁:相当于是读锁,一个事务添加了读锁之后,其他事务还是可以添加读锁,但是不可以先加写锁。
2. 排他锁:只有一个事务能够添加,其他锁只能等着释放。比如读锁。
mysql还和oracle有一点不一样的是mysql还有不同的存储引擎,常用的myisam只支持表级锁,innodb才支持不同的行锁。表锁的有点是锁的粒度大,简单,耗费的资源少,但是缺点是并发度低。也许这也是innodb存储引擎能够被更广泛使用的原因之一。
InnoDB存储引擎的锁的算法有三种:
1. 记录锁:也是行锁的一种,是可以锁定某条记录。
2. 间隙锁:是可以锁定某个区间,但是不包含记录本身。比如锁定大于3小于30的所有数据。
3. Next-key lock:record+gap 锁定一个范围,包含记录本身。
相关知识点:
------------------------
欢迎访问个人网站:
https://lessthinker.com
| 留言与评论(共有 0 条评论) “” |