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