Есть что-то, что сводит меня с ума ... У меня есть таблица в одной базе данных размером более 1,4 ГБ и около 500 000 записей.
Проблема в том, что каждый раз или почти всегда, когда мой сервер выходит из строя из-за перегрузки или какой-либо другой проблемы, эта таблица повреждается.
Я так думаю, потому что веб-сайт, который его использует, загружается вечно, а сервер перегружается. Чтобы исправить это, мне нужно запустить таблицу восстановления TABLE.
Что я могу сделать, чтобы этого избежать?
Преобразуйте таблицу в InnoDB. Для этого есть несколько причин:
ПРИЧИНА 1 : Таблицы MyISAM выполняют полную блокировку таблицы с каждым INSERT, UPDATE и DELETE. InnoDB выполняет блокировки на уровне строк, которые все еще могут быть прочитаны благодаря MVCC (мультиверсионный контроль параллелизма)
ПРИЧИНА 2 : Восстановление после сбоя с помощью InnoDB может быть таким же простым, как перезапуск MySQL, поскольку журналы повторного выполнения записывают незафиксированные транзакции и обрабатываются либо посредством обычных фиксаций транзакций, либо во время запуска mysql.
ПРИЧИНА 3 : Таблицы MyISAM содержат счетчик в своих заголовках для дескрипторов открытых файлов в таблице. Простейшая «разбитая» таблица MyISAM - это таблица, в которой данные в порядке, но количество дескрипторов открытых файлов больше нуля, когда таблица закрыта. Выполнение myisamchk -r или REPAIR TABLE для таблицы MyISAM всегда сопряжено с риском потери одной или нескольких строк данных.
ПРИЧИНА 4 : InnoDB имеет КИСЛОТА (атомарность, последовательность, изоляция, долговечность) соответствие. Транзакции могут состоять из одного или нескольких операторов SQL и обрабатывать их как одну операцию (таким образом, атомарность). Данные либо полностью фиксируются, либо полностью откатываются (таким образом, согласованность и долговечность). Каждое соединение с БД может иметь собственное представление данных во время обновления без блокировки (таким образом, изоляция с помощью MVCC).
Таблица, которая не находится в согласованном состоянии (например, в случае сбоя сервера), должна нуждаться в ремонте, чтобы проверить и исправить любые проблемы из-за несогласованного состояния диска (частично полностью изменились и т. Д.) - это в значительной степени задумано.
Я бы порекомендовал приложить эти усилия для уменьшения количества сбоев сервера.
Возможно, стоит потратить некоторое время на стабилизацию сервера в целом, потому что я не думаю, что вы сможете избежать ремонта таблиц.