Назад | Перейти на главную страницу

Высокий коэффициент ожидания блокировки в MySQL

на моем сайте я регистрирую каждый просмотр страницы (дата, IP, реферер, страница и т. д.) в простой таблице mysql.

Эта таблица получает очень мало выборок (3 в минуту), но много вставок. (около 100 в секунду)

Сегодня я изменил эту таблицу с таблицы InnoDB на таблицу MEMORY, это имело смысл для меня, чтобы предотвратить ненужный ввод-вывод жесткого диска. Я также обрезаю этот стол раз в минуту, чтобы он никогда не становился слишком большим.

-

С точки зрения производительности все работает нормально. Но я заметил, что во время настройки праймера мой коэффициент Current Lock Wait довольно высок.

Current Lock Wait ratio = 1 : 561

Мой вопрос: Стоит ли беспокоиться об этом коэффициенте ожидания блокировки? И есть ли что-то, что я могу изменить в моем my.cnf, чтобы улучшить ситуацию, чтобы коэффициент ожидания блокировки не был таким высоким?

Я бы сказал, что если вас устраивает производительность, вам не стоит беспокоиться об этом, особенно потому, что это таблица MEMORY.

Предположения о возможной причине:

  1. У вас много вставок. Если они поступают из параллельных источников, они могут вызвать внутреннюю блокировку таблицы памяти во время вставки. Вероятно, это не проблема, потому что вы используете таблицу MEMORY, которая будет очень быстрой. Вы не можете предотвратить полную блокировку одновременного доступа. Вы можете попробовать INSERT DELAYED, чтобы узнать, поможет ли это.
  2. У вас есть УНИКАЛЬНЫЕ колонки? Блокировка может быть вызвана отсутствующим индексом, который вызывает последовательное сканирование таблицы для каждой вставки для проверки ограничения UNIQUE или другой подобной причины (я не уверен, разрешает ли MySQL столбцы UNIQUE без индекса).