锁
全局锁
全局锁可以将整个数据库实例加锁:
锁住整个数据库,只允许读取数据
方法一:
mysql> flush tables with read lock; //加锁
Query OK, 0 rows...,将无法锁住,就会导致出现在可重复读时却出现幻读的情况,所以mysql引入了间隙锁
间隙锁如何解决幻读
在插入数据时,mysql额外增加了间隙锁的概念,在插入表数据后,会生成 "前开后闭"的间隙区间:...在操作数据时,将自动给此条数据加锁:
临键锁
临键锁就是 行锁+间隙锁的组合
共享锁和排他锁
共享锁(S锁) 排它锁(X锁)其实就是我们说的读锁和写锁
在查询语句中,mysql自动加 S锁,其他连接也只能加...S锁查询,不能加写锁更新
在insert,update,delete 语句中,将自动加 X锁,其他语句不能对锁住的数据操作(包括读取)
意向锁
意向锁是mysql表级锁,
当需要对数据进行加 共享锁.../排他锁时,需要先对此表进行加意向(共享/排他)锁
此锁为mysql自动增加,无需用户干预
乐观锁和悲观锁
乐观锁 是指业务层面上,对修改数据不会冲突的情况做出的乐观判断,先进行更新数据,再进行判断.