漫谈 MySQL 的锁机制

  1. 云栖社区>
  2. Java技术进阶>
  3. 博客>
  4. 正文

漫谈 MySQL 的锁机制

javaedge 2019-01-13 16:50:43 浏览1825
展开阅读全文

1 MySQL的三种锁

1.1 表锁

  • 开销小,加锁快
  • 不会出现死锁
  • 锁定粒度大,发生锁冲突的概率最高,并发度最低

1.2 行锁

  • 开销大,加锁慢
  • 会出现死锁
  • 锁定粒度小,发生锁冲突的概率最低,并发度最高

1.3 页锁

  • 开销和加锁时间介于表锁和行锁之间
  • 会出现死锁
  • 锁定粒度介于表锁和行锁之间,并发度一般

1.4 引擎与锁

  • MyISAM和MEMORY支持表锁
  • BDB支持页锁,也支持表锁
  • Innodb既支持行锁,也支持表锁,默认行锁

1.5 查询表锁争用情况

检查table_locks_waitedtable_locks_immediate状态变量分析

  • table_locks_immediate : 可以立即获取锁的次数
  • table_locks_waited : 不能立即获取锁,需要等待锁的次数

image

image

table_locks_waited 的值越高,则说明存在严重的表级锁的争用情况

2

网友评论

登录后评论
0/500
评论
javaedge
+ 关注
所属云栖号: Java技术进阶