MySQL有三种锁的级别:页级、表级、行级。
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。
页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,发生锁冲突的概率、并发度也都介于表锁和行锁之间。
算法:
● Next-KeyLocks锁,同时锁住记录(数据),并且锁住记录前面的Gap。
● Gap锁,不锁记录,仅仅记录前面的Gap。
● Recordlock锁,锁数据,不锁Gap。
● 所以Next-KeyLocks = Gap锁 + Recordlock锁。
网友评论