(Я использую движок таблиц MyISAM)
REPAIR TABLE
Устраняет проблемы повреждения таблицы, такие как количество дескрипторов открытых файлов, разрешение строк с данными переменной длины и т. Д.OPTIMIZE TABLE
просто копирует таблицу, чтобы удалить неиспользуемое пространство. Если таблица MyISAM, ANALYZE TABLE
также выполняется для обновления статистики индекса для оптимизатора запросов. Если таблица InnoDB, ANALYZE TABLE
обойден.У вас может быть автоматическая проверка mysqld и восстановление всех таблиц MyISAM.
Фактически книга Руководство по сертификации MySQL 5.0, Раздел 30.5, На страницах 444,445 указано:
Серверу MySQL можно дать указание автоматически проверять и восстанавливать таблицы MyISAM. При включенном автоматическом восстановлении сервер проверяет каждую таблицу MyISAM при ее открытии, чтобы узнать, была ли таблица закрыта должным образом в последний раз, когда она использовалась, и не помечена ли она как требующая ремонта. Если таблица не в порядке, сервер восстанавливает ее.
Чтобы включить автоматическое обслуживание таблиц MyISAM, запустите сервер с параметром --myisam-recovery. Значение параметра может состоять из списка, разделенного запятыми, из одного или нескольких следующих значений:
- DEFAULT для проверки по умолчанию.
- BACKUP сообщает серверу сделать резервную копию любой таблицы, которая должна измениться.
- FORCE вызывает выполнение восстановления таблицы, даже если это приведет к потере более одной строки данных.
- QUICK выполняет быстрое восстановление: таблицы, в которых нет дыр в результате удалений или обновлений, пропускаются.
Например, чтобы указать серверу выполнить принудительное восстановление таблиц MyISAM, в которых обнаружены проблемы, но сделать резервную копию любых таблиц, которые он изменяет, вы можете поместить следующие строки в файл параметров:
[mysqld] myisam-recovery = ПРИНУДИТЕЛЬНО, РЕЗЕРВНОЕ КОПИРОВАНИЕ
Вы также можете создать файл с именем /root/StartUp.sql
и положил REPAIR TABLE
команды, которые вы хотите внутри. Затем добавьте init-file=/root/StartUp.sql
к /etc/my.cnf
и перезапустите mysql, чтобы запустить сценарий инициализации.