MySQL - как сделать оптимизацию таблиц базы (OPTIMIZE TABLE) и в каких случаях это нужно применять?
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
MySQL - как сделать оптимизацию таблиц базы (OPTIMIZE TABLE) и в каких случаях это нужно применять?
Пример использования команды
Синтаксис команды для оптимизации таблиц одной базы:
# mysqlcheck -u root -p --optimize database_name
Синтаксис команды для оптимизации таблиц всех баз на сервере:
# mysqlcheck -A -u root -p --optimize --all-databases, -A Check all tables in all databases. This is the same as using the --databases option and naming all the databases on the command line.
Также можно заменить mysqlcheck --optimize на одну команду mysqloptimize. Ниже в таблице показаны варианты для repair, analyze и optimize :
┌──────────────┬──────────────────────────────────┐ │mysqlrepair │ The default option is --repair │ ├──────────────┼──────────────────────────────────┤ │mysqlanalyze │ The default option is --analyze │ ├──────────────┼──────────────────────────────────┤ │mysqloptimize │ The default option is --optimize │ └──────────────┴──────────────────────────────────┘
Расширенный синтаксис параметра OPTIMIZE TABLE
4.5.1. Синтаксис команды OPTIMIZE TABLE OPTIMIZE TABLE tbl_name[,tbl_name]…
Команда OPTIMIZE TABLE должна использоваться после удаления большей части таблицы или если в таблице было внесено много изменений в строки переменной длины (таблицы, в которых есть столбцы VARCHAR, BLOB или TEXT). Удаленные записи поддерживаются при помощи связного списка, и последующие операции INSERT повторно используют позиции старых записей. Чтобы перераспределить неиспользуемое пространство и дефрагментировать файл данных, можно воспользоваться командой OPTIMIZE TABLE. На данный момент команда OPTIMIZE TABLE работает только с таблицами MyISAM и BDB. Для таблиц BDB команда OPTIMIZE TABLE выполняет ANALYZE TABLE. Можно применить OPTIMIZE TABLE к таблицам других типов, запустив mysqld с параметром —skip-new или —safe-mode, но в этом случае OPTIMIZE TABLE лишь только выполняет ALTER TABLE. Команда OPTIMIZE TABLE работает следующим образом: * Если в таблице есть удаленные или разделенные строки, восстанавливает таблицу. * Если индексные страницы не отсортированы — сортирует их. * Если статистические данные не обновлены (и восстановление нельзя осуществить путем сортировки индексов), обновляет их.
Команда OPTIMIZE TABLE для MyISAM представляет собой эквивалент выполнения myisamchk —quick —check-only-changed —sort-index —analyze над таблицей. Обратите внимание: во время работы OPTIMIZE TABLE таблица заблокирована!
Вывод - в каких случаях нужно применять OPTIMIZE TABLE
1) Так как при выволнении данной команды таблица которая оптимизируется - блокируется, то выполнять данную команду нужно только в спады посещаемости, например, ночью.
2) Данная команда выполняется только на сайтах, где в базе происходит очень много удалений и изменений записей, например, меняется несколько тысяч статей или комментариев.