У меня есть запрос INSERT, который добавляет заказ в БД, он успешно работает на производственном сервере в течение нескольких лет, сегодня около 10% этих INSERT не отображаются в таблице БД, в коде не было изменений который выполняет этот запрос, поэтому я предполагаю, что это основано на производительности, поскольку сервер в последнее время, безусловно, находится под более высокой нагрузкой.
Это таблица MyISAM с примерно 90 000 записей, запущенными на сервере CentOS.
Есть ли какие-либо методы устранения неполадок, которые я могу использовать, чтобы понять, почему запрос не вставляет данные, поскольку я считаю, что сам сервер является узким местом?
Я также предполагаю, что код игнорирует ошибку во время выполнения. Возможные причины:
Высокая нагрузка не заставит MySQL слепо отбрасывать запросы INSERT. Я предполагаю, что ваше приложение, возможно, получает ошибку при подключении к БД, и поэтому MySQL никогда не получает запрос INSERT. Я бы рекомендовал изучить ваш код, чтобы убедиться, что вы правильно улавливаете и регистрируете ошибки БД.
Кстати, действительно ли вы проверил чтобы узнать, не перегружен ли сервер. Вы говорите, что в этой таблице 90 тыс. Записей (что на самом деле довольно мало), но вы не приводите никаких цифр относительно того, сколько запросов в секунду обрабатывает сервер. Бегать top
чтобы следить за средней нагрузкой во время пикового использования, обращая внимание не только на саму среднюю нагрузку, но и на то, какой процент времени процессы сидят в iowait ( %wa
ценность в top
)