mysql各种锁
根据级别分为:全局锁,表级锁,页级锁,间隙锁,临键锁,行级锁
根据锁共享策略分为:共享锁,排他锁,意向共享锁,意向排他锁
根据加锁策略分为:乐观锁,悲观锁
其他锁相关:自增锁,mdl...锁
全局锁
全局锁可以将整个数据库实例加锁:
锁住整个数据库,只允许读取数据
方法一:
mysql> flush tables with read lock; //加锁
Query OK, 0 rows...在操作一个表数据时,会自动加上 MDL读锁,在变更表结构或者删除表时,会自动加上 MDL写锁
页级锁
只有RDB引擎才支持页级锁
锁定粒度介于行级锁和表级锁中间的一种锁。...同时Q3是新增一条数据,无法锁住
行锁只能根据索引锁住存在的数据,如果数据不存在时,将无法锁住,就会导致出现在可重复读时却出现幻读的情况,所以mysql引入了间隙锁
间隙锁如何解决幻读
在插入数据时,mysql.../排他锁时,需要先对此表进行加意向(共享/排他)锁
此锁为mysql自动增加,无需用户干预
乐观锁和悲观锁
乐观锁 是指业务层面上,对修改数据不会冲突的情况做出的乐观判断,先进行更新数据,再进行判断.