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

Восстановить или оптимизировать таблицу в MySQL

  1. Включает ли Optimize таблицу ремонта или наоборот?
  2. Можно ли выполнить таблицу восстановления, только если она обнаружена поврежденной, какие-либо инструменты могут это поддержать?

(Я использую движок таблиц 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, чтобы запустить сценарий инициализации.