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

MySQL INSERT иногда не вставляется в БД

У меня есть запрос INSERT, который добавляет заказ в БД, он успешно работает на производственном сервере в течение нескольких лет, сегодня около 10% этих INSERT не отображаются в таблице БД, в коде не было изменений который выполняет этот запрос, поэтому я предполагаю, что это основано на производительности, поскольку сервер в последнее время, безусловно, находится под более высокой нагрузкой.

Это таблица MyISAM с примерно 90 000 записей, запущенными на сервере CentOS.

Есть ли какие-либо методы устранения неполадок, которые я могу использовать, чтобы понять, почему запрос не вставляет данные, поскольку я считаю, что сам сервер является узким местом?

Я также предполагаю, что код игнорирует ошибку во время выполнения. Возможные причины:

  • Достигнуто ограничение на количество подключений MySQL (см. Ответ ErikA). Обычно сервер не получает запросы INSERT. Проверьте количество подключений (thread_connected в «SHOW GLOBAL STATUS;» по сравнению с max_connections).
  • Параметр неверен, и INSERT не выполняется, но ошибка игнорируется. Включите журнал запросов MySQL, чтобы узнать, получает ли сервер запрос с неверными параметрами.
  • Код не работает до отправки запроса (например, из-за преобразования магических параметров). Проверьте журнал ошибок php / журнал ошибок веб-сервера.

Высокая нагрузка не заставит MySQL слепо отбрасывать запросы INSERT. Я предполагаю, что ваше приложение, возможно, получает ошибку при подключении к БД, и поэтому MySQL никогда не получает запрос INSERT. Я бы рекомендовал изучить ваш код, чтобы убедиться, что вы правильно улавливаете и регистрируете ошибки БД.

Кстати, действительно ли вы проверил чтобы узнать, не перегружен ли сервер. Вы говорите, что в этой таблице 90 тыс. Записей (что на самом деле довольно мало), но вы не приводите никаких цифр относительно того, сколько запросов в секунду обрабатывает сервер. Бегать top чтобы следить за средней нагрузкой во время пикового использования, обращая внимание не только на саму среднюю нагрузку, но и на то, какой процент времени процессы сидят в iowait ( %wa ценность в top)