暂无图片
MySQL Innodb存储引擎存储引擎状态报告中spin为什么会持续占用cpu?
我来答
分享
暂无图片 匿名用户
MySQL Innodb存储引擎存储引擎状态报告中spin为什么会持续占用cpu?

MySQL Innodb存储引擎存储引擎状态报告中spin为什么会持续占用cpu?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
杨俊

MySQL 使用了自旋锁(spin lock),它本质上是一个非阻塞锁,也就是说,如果某线程需要获取锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取锁。频繁的检测会让流水线上充满了读操作,CPU必须保证所有读操作读到正确的值,spin lock通过pause指令强制占有CPU,而使自己不被换出CPU,而流水线重排又十分耗时,影响lock()的性能。所以spin一直存在,会持续占用CPU。

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏