MySQL中的高locking等待比率

在我的网站上,我logging每个网页浏览(date,IP,引用,页面等)在一个简单的MySQL表。

这个表得到很less的select(每分钟3),但很多插入。 (约每秒100)

今天我把这个表从一个InnoDB表改为一个MEMORY表,这对我来说是有意义的,以防止不必要的硬盘IO。 我也每分钟修剪一次这张桌子,以确保它永远不会太大。

性能明智,事情运行良好。 但是我注意到在运行调优时,我的当前locking等待比率是相当高的。

Current Lock Wait ratio = 1 : 561 

我的问题:我应该担心这个锁等待比率吗? 我的my.cnf中有什么可以改变的地方,以便locking等待率不那么高?

我会说,如果你对性能感到满意,你不应该担心,特别是因为这是一个MEMORY表。

猜测可能的原因:

  1. 你有很多的插入。 如果这些来自并发源,那么在插入期间可能导致内存表的内部locking。 这不是一个问题,因为你正在使用MEMORY表,这将是非常快的。 您不能阻止并发访问的所有locking。 你可以尝试插入DELAYED看看是否有帮助。
  2. 你有任何UNIQUE列吗? locking可能是由于缺less索引导致每个插入的顺序表扫描来validationUNIQUE约束或一些类似的原因(我不确定MySQL是否允许没有索引的UNIQUE列)。