MySQL中都有哪些锁类型?现场!

2026-04-29 21:203阅读0评论SEO优化
  • 内容介绍
  • 文章标签
  • 相关推荐

前言——别说我没提醒你, MySQL的锁可不是闹着玩的

先来一句鸡汤:数据库的锁,就像是夜店里的保镖,谁不想进门,却得排队等。这玩意儿一不小心就卡死你的业务,甚至让你怀疑人生。下面咱们把MySQL里各种“神秘组织”——锁类型——一股脑儿抖出来 顺便甩几句情绪垃圾,保准你看完后想马上去重启实例。

1️⃣ 行级锁 & 表级锁 & 页级锁——粒度大小随意切

痛并快乐着。 行级锁是最细的, 你想把某条记录拎出来单独拴住;表级锁就是把整张桌子搬到门口,谁想坐都得等;页级锁介于两者之间,好像是把几行装进一个盒子里封死。

MySQL进阶突击系列(06)MySQL有几种锁?| 别背答案,现场演示一下

要记住一点:InnoDB默认用行级锁,主要原因是它“高效”。MyISAM只能玩表级锁,那种场景下只适合一次性导入大批数据后再读,累并充实着。。

2️⃣ 共享锁 S 锁 & 排他锁 X 锁——爱分享还是爱独占

这是可以说的吗? S 锁可以多人一边读,但没人能写。 X 锁写谁也不让读,只有拿到钥匙的人才能动弹。

有意思的是 如果数据已经被 X 锁住读操作仍然可以看到旧版本的数据但不能加 S 锁,也就是“读不到最新的”。这点经常被新人忽略, 以为 X 锁直接阻塞 SELECT,后来啊却发现 SELECT 还能跑,只是看不到未提交的改动,试试水。。

3️⃣ 意向锁——给表加标记,让系统省事儿

不忍卒读。 Intention Shared / Intention Exclusive 就是“我要在这张表里搞点小动作”。它们本身不阻塞任何事务,只是告诉存储引擎:“别在这张表上再加全局排他锁了”。如果你要对某行加 X 锁,就必须先对表加 IX 锁;如果要 S 锁,则先加 IS 锁。

阅读全文

前言——别说我没提醒你, MySQL的锁可不是闹着玩的

先来一句鸡汤:数据库的锁,就像是夜店里的保镖,谁不想进门,却得排队等。这玩意儿一不小心就卡死你的业务,甚至让你怀疑人生。下面咱们把MySQL里各种“神秘组织”——锁类型——一股脑儿抖出来 顺便甩几句情绪垃圾,保准你看完后想马上去重启实例。

1️⃣ 行级锁 & 表级锁 & 页级锁——粒度大小随意切

痛并快乐着。 行级锁是最细的, 你想把某条记录拎出来单独拴住;表级锁就是把整张桌子搬到门口,谁想坐都得等;页级锁介于两者之间,好像是把几行装进一个盒子里封死。

MySQL进阶突击系列(06)MySQL有几种锁?| 别背答案,现场演示一下

要记住一点:InnoDB默认用行级锁,主要原因是它“高效”。MyISAM只能玩表级锁,那种场景下只适合一次性导入大批数据后再读,累并充实着。。

2️⃣ 共享锁 S 锁 & 排他锁 X 锁——爱分享还是爱独占

这是可以说的吗? S 锁可以多人一边读,但没人能写。 X 锁写谁也不让读,只有拿到钥匙的人才能动弹。

有意思的是 如果数据已经被 X 锁住读操作仍然可以看到旧版本的数据但不能加 S 锁,也就是“读不到最新的”。这点经常被新人忽略, 以为 X 锁直接阻塞 SELECT,后来啊却发现 SELECT 还能跑,只是看不到未提交的改动,试试水。。

3️⃣ 意向锁——给表加标记,让系统省事儿

不忍卒读。 Intention Shared / Intention Exclusive 就是“我要在这张表里搞点小动作”。它们本身不阻塞任何事务,只是告诉存储引擎:“别在这张表上再加全局排他锁了”。如果你要对某行加 X 锁,就必须先对表加 IX 锁;如果要 S 锁,则先加 IS 锁。

阅读全文