InnoDB не блокирует таблицу для вставки, если вы выполняете обновление.У ваших пользователей не будет никаких странных зависаний.
Это MVCC-совместимый движок , предназначенный для одновременного доступа к базовым таблицам.
Вы можете управлять поведением движка,выбирая соответствующий уровень изоляции , однако значение по умолчанию (REPEATABLE READ
) отлично и делает работу более чем хорошо.
Если таблица изменяется несколькими пользователями (не пользователями, которые подключаются)на ваш сайт, но соединения установлены с MySQL через язык сценариев или какой-либо другой сервис), и есть много операций вставки / обновления / удаления - MySQL может выдать ошибку, сообщив, что произошла взаимоблокировка.
Дедлок - это предупреждение, а неошибка, что более 1 потока пытались получить доступ к занятому ресурсу (например, два потока пытались обновить одну и ту же строку одновременно, но только 1 будет разрешено это делать).Это указание на то, что вам следует повторить запрос.
Я предлагаю вам позаботиться о всех возможных сценариях на языке по вашему выбору, когда речь идет об обработке MySQL, которая находится под более интенсивным вводом / выводом.
~ 6 вставок в секунду - это не много, убедитесь, что вы разрешаете MySQL доступ к достаточным системным ресурсам.Для InnoDB, проверьте значение innodb_buffer_pool_size
или немного погуглите, чтобы узнать, что это такое и как использовать его, чтобы ваша база данных работала быстро.
Удачи!