MySQL 中的高锁等待率

MySQL 中的高锁等待率

在我的网站上,我将每个页面浏览量(日期、ip、引荐来源、页面等)记录在一个简单的 mysql 表中。

该表的选择很少(每分钟 3 次),但插入很多。(每秒约 100 次)

今天我把这个表从 InnoDB 表改为 MEMORY 表,这对我来说很有意义,可以防止不必要的硬盘 IO。我还每分钟修剪一次这个表,以确保它不会变得太大。

--

性能方面,一切运行良好。但我注意到,在运行 tuning-primer 时,我的当前锁等待率相当高。

Current Lock Wait ratio = 1 : 561

我的问题:我应该担心这个锁等待率吗?我可以在 my.cnf 中做些更改来改善情况,让锁等待率不那么高吗?

答案1

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

猜测可能原因:

  1. 您有大量插入。如果这些插入来自并发源,则可能导致插入期间内存表的内部锁定。这可能不是问题,因为您使用的是 MEMORY 表,它会非常快。您无法阻止所有并发访问的锁定。您可以尝试 INSERT DELAYED 看看是否有帮助。
  2. 您有任何 UNIQUE 列吗?锁定可能是由于缺少索引而导致的,该索引导致每次插入时都进行顺序表扫描以验证 UNIQUE 约束或某些类似原因(我不确定 MySQL 是否允许没有索引的 UNIQUE 列)。

相关内容