网易首页 > 网易号 > 正文 申请入驻

第37问:自旋锁 旋着旋着人就糊涂了

0
分享至

问题

追求 MySQL 的性能时,总听说要调整自旋锁的参数: innodb_spin_wait_delay 和 innodb_sync_spin_loops,是真的么?

实验

首先我们要知道自旋锁的优点:自旋锁要上锁时,如果需要等待其他线程释放锁,那么:

  • • 在等待锁的过程中会先线程会先自旋一段时间

    • • 自旋阶段,线程不会放弃 CPU
  • • 自旋过后:

    • • 如果可以获取锁了,那么响应会比较快(自旋没发生上下文切换)

    • • 如果还需要等待锁,再用更高成本的方式进行锁等待

innodb_spin_wait_delay 参数决定了自旋阶段的长度。现在我们试着调整 innodb_spin_wait_delay 参数,来测试一下:

先宽油起一个数据库,此处忽略步骤

建个表,放点数据:

配置好 performance_schema:

检查一下相关参数:

清理 performance_schema 的统计值:

来点压力:

查询一下锁等待成本最高的锁:

可以看到锁等待成本最高的是 lock_mutex,是保护 MySQL 锁系统的锁

下面我们来调整一下 innodb_spin_wait_delay,让自旋的时间变长:

重做一次压力(记得先清理统计数据),查看统计数据:

可以看到 lock_mutex 的平均等待时间从 751267 增加到了 1399041。我们让自旋阶段增加了 10 倍,锁等待的时间也会随之增大。

目前的实验看上去自旋阶段越短越好,那么自旋阶段是不是就没有意义了?当然不会。

大家可以将 innodb_spin_wait_delay 设置为 1,再进行测试,随着自旋阶段的减少,锁等待的时间也会随之增大(大部分锁都使用了高成本的方式来进行等待)。

那么如何选择自旋的参数呢?我们建议“不出问题不瞎调”。

在之前的统计数据中,时间的单位是:cycle,根据以下换算表,锁的平均时间是 1399041 cycle,大概也就 0.5ms(1399041 / 2385353233 = 0.00058 s),占 SQL 的整体时间很低,可以不用瞎调。

一个著名的 CPU 问题

自旋阶段,MySQL 会调用 CPU 的 PAUSE 指令,既能占用了 CPU,同时 PAUSE 指令(比起其他占用 CPU 的指令)也比较节能。

不过既然占用了 CPU,那么就会体现在 CPU 的使用率上。

现在我们将 innodb_spin_wait_delay 再放大一点比较一下:

可以看到 CPU 使用率会随着自旋阶段变长而升高

Intel 的 Skylake 系列 CPU,调大了 PAUSE 指令的周期时长。从 10 cycles 调大到 140 cycles(也许是因为让 PAUSE 周期变长更有利于节能)

类似于今天的实验,这个指令的调整相当于拉长了自旋阶段。

这就导致了在 Skylake 系列 CPU 下,MySQL 的锁表现和 CPU 占用率表现都有可能更糟糕。

(推荐文章:https://tech.meituan.com/2020/04/16/intel-pause-mysql.html)

小贴士
看到这里大家是不是开始焦虑了,要准备换 CPU 了?
其实不必焦虑,绝大部分情况下,大家不用追求极致的性能。比起榨取服务器的一点点极限性能,业务稍微调整一下 SQL 取得的收益会 大几个数量级。
俗话说:业务写得好,运维回家早。

关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
6月新势力销量:零跑9.3万台一骑绝尘,网友:性价比这块没对手!

6月新势力销量:零跑9.3万台一骑绝尘,网友:性价比这块没对手!

言车有徐
2026-07-01 16:32:08
特斯拉最新优惠上线,降价 8000 元!

特斯拉最新优惠上线,降价 8000 元!

花果科技
2026-07-01 17:27:12
美股盘前,美光科技跌幅扩大至4%,闪迪跌近5%

美股盘前,美光科技跌幅扩大至4%,闪迪跌近5%

每日经济新闻
2026-07-01 16:41:05
央视发声!如果不出意外的话,7月开始后,社会上或将出现3大变化

央视发声!如果不出意外的话,7月开始后,社会上或将出现3大变化

陈博世财经
2026-07-01 14:05:05
热死也不能买中国空调?德国媒体:中国正“摧毁”欧洲

热死也不能买中国空调?德国媒体:中国正“摧毁”欧洲

霁寒飘雪
2026-07-01 17:12:25
央视7月1日CCTV5+直播国乒大满贯,王楚钦王曼昱出战

央视7月1日CCTV5+直播国乒大满贯,王楚钦王曼昱出战

谭颞爱搞笑
2026-06-30 16:11:40
欠税39.5元!美妆博主程十安停更三年回归涨粉

欠税39.5元!美妆博主程十安停更三年回归涨粉

情感大头说说
2026-07-01 15:45:39
胆子不小!小国世界杯晋级后,马上喊话大陆:不跟台湾“断交”!

胆子不小!小国世界杯晋级后,马上喊话大陆:不跟台湾“断交”!

好贤观史记
2026-07-01 13:50:39
TA:森林狼队已经跟詹姆斯阵营进行了接触

TA:森林狼队已经跟詹姆斯阵营进行了接触

北青网-北京青年报
2026-07-01 19:54:08
白俄高层已经意识到,卢卡申科访华一旦“托孤”,将改变俄乌大局

白俄高层已经意识到,卢卡申科访华一旦“托孤”,将改变俄乌大局

聚焦最新动态
2026-07-01 14:13:56
87岁的聂荣臻元帅接受采访,当谈到彭老总时:长征时他才三十多岁

87岁的聂荣臻元帅接受采访,当谈到彭老总时:长征时他才三十多岁

大江
2026-07-01 14:26:05
49岁的她穿条睡裤去看球,竟把全场贵妇装秒成了渣

49岁的她穿条睡裤去看球,竟把全场贵妇装秒成了渣

娱圈观察员
2026-07-01 00:54:24
真狠!连跌三年从49跌到7又横盘两年,社保却从3400万加到5400万

真狠!连跌三年从49跌到7又横盘两年,社保却从3400万加到5400万

长风价值掘金
2026-07-01 14:53:36
阿利松主动打招呼,铃木彩艳:几年前我根本不敢想这样的场景

阿利松主动打招呼,铃木彩艳:几年前我根本不敢想这样的场景

懂球帝
2026-07-01 10:13:28
北京楼市:逆天

北京楼市:逆天

坠入二次元的海洋
2026-07-01 16:49:34
贝克汉姆14岁的女儿小七怎么如此成熟了,好像少妇

贝克汉姆14岁的女儿小七怎么如此成熟了,好像少妇

西楼知趣杂谈
2026-06-13 19:52:21
巴西总统:感谢安帅没换下卡塞米罗,我和身边人都说把他换下

巴西总统:感谢安帅没换下卡塞米罗,我和身边人都说把他换下

懂球帝
2026-07-01 09:31:15
李谷一道出实情,揭晓宋祖英走上高位的真相,观众:原来如此!

李谷一道出实情,揭晓宋祖英走上高位的真相,观众:原来如此!

动物奇奇怪怪
2026-06-29 18:46:04
金靖导演老公露面,气质干净素颜也挺帅,夫妻俩这性格差距是真大

金靖导演老公露面,气质干净素颜也挺帅,夫妻俩这性格差距是真大

无处不风景love
2026-06-30 17:51:28
泰国租妻产业,正在收割中国“退休老头”

泰国租妻产业,正在收割中国“退休老头”

毒sir财经
2026-06-30 22:38:02
2026-07-01 20:52:49
爱可生云数据库
爱可生云数据库
企业数据处理技术整体解决方案
411文章数 20关注度
往期回顾 全部

科技要闻

Claude Code被曝“植入木马”识别中国用户

头条要闻

小区起火双胞胎男童遇难:消防栓疑无水 物业经理辞职

头条要闻

小区起火双胞胎男童遇难:消防栓疑无水 物业经理辞职

体育要闻

卖球衣救子的门将,把德国扑出了世界杯

娱乐要闻

张凌赫:我连心疼你都隔着时差

财经要闻

新氧贷款:宣传年化15%,实际顶格24%

汽车要闻

上半年累计销量突破142万辆 吉利6月销量出炉

态度原创

手机
房产
旅游
时尚
军事航空

手机要闻

2699元起!iQOO Pad5c发布:12.1英寸大屏+第三代骁龙8s

房产要闻

洞察新局 | 2026年天河置业红盘图鉴

旅游要闻

曲靖老城南门不简单,得名田间禾苗清风,千年前歌谣写尽温柔!

Meiinpsn的穿衣风格,清新又叛逆

军事要闻

美伊代表前往多哈 谈判方式出现"重大倒退"

无障碍浏览 进入关怀版