innodb_sync_spin_loops是什么?

chencliff 发布于 2011/07/22 11:19
阅读 1K+
收藏 0

看了今天OS上的一个淘宝数据库优化的博客,发现一个不认识的东东:

innodb_sync_spin_loops

google了一下,貌似和什么自旋锁有关,具体什么关系就不知道了。我甚至还百度了一下,好像说的都不清楚。

 

这个,是什么东东,怎么用?好像在percona上也有它。

加载中
0
红薯
红薯

Percona 扩展自 MySQL ,MySQL 有的 Percona 肯定也有。

不过不知道是干吗的

0
bastetwang
bastetwang

现在很多锁的实现(像win上的临界区)是先进行自旋,然后升级成更高级的像内核事件之类的东东,这样如果冲突不大的话,可以加快速度。比如InitializeCriticalSectionAndSpinCoun就可以让你设定一个在升级成内核事件之前自旋的次数。

innodb的mutex是他们自己实现的,

代码可能会像这样;

spin_loop:
for (i=0; i< innodb_spin_locks;i++)
  if (mutex_try_lock()) return; // success

// we are here if spin loop was not successful
reserve_cell in array of cell;
wait on condition_variable in reserved cell;

这个值一般自己设定,如果自旋次数太多,冲突也很多,反而会影响性能(相当于cpu 空转)

我感觉就是这个东东。
返回顶部
顶部