Анализ + оптимизация на таблицах InnoDB - PullRequest
0 голосов
/ 24 февраля 2019

В то время, когда я интенсивно работал с MyISAM Tables, у меня всегда был cronjob, который выполнялся

~# mysqlanalyze -o database

Я знаю, что MyISAM извлекает выгоду из этого определенными способами, например: фрагментация и все такое

Теперь, когда выполняется одна и та же команда в базе данных, где большинство таблиц - InnoDB, я задаюсь вопросом, «приносит ли это какую-то пользу» таблицам и считается хорошей практикой делать это время от времени или если это довольно контрпродуктивно.Чтение много:

Table does not support optimize, doing recreate + analyze instead

Что звучит дорого по отношению к времени дискового ввода-вывода / ЦП?!

был бы признателен за этот вклад.

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Не беспокойся.InnoDB почти никогда не нуждается ни в ANALYZE, ни в OPTIMIZE;не тратьте свое время, если вы не обнаружили необходимость.

0 голосов
/ 24 февраля 2019

https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html говорит:

Для таблиц InnoDB OPTIMIZE TABLE сопоставляется с ALTER TABLE ... FORCE, что перестраивает таблицу для обновления статистики индекса и освобождения неиспользуемого пространства в кластерном индексе,

Это приносит пользу в тех случаях, когда у вас слишком много фрагментации.Страницы будут заполняться более эффективно, индексы будут перестраиваться, а дисковое пространство, занимаемое таблицей, будет сокращаться, если вы используете innodb_file_per_table (по умолчанию в последних версиях).

Это занимает время, в зависимости отна размер вашего стола.Он заблокирует стол, пока он работает.Это потребует дополнительного дискового пространства во время работы, так как создает копию таблицы.

Выполнение оптимизации таблицы в таблице InnoDB обычно не требуется делать часто, но только после большого количества операций вставки /обновлять / удалять в таблице таким образом, чтобы это могло привести к фрагментации.

ANALYZE TABLE значительно меньше влияет на InnoDB.Это не требует создания копии таблицы.Это действие только для чтения, оно просто читает случайную выборку страниц из таблицы и использует ее для оценки количества строк, среднего размера строк и обновляет статистику об индексах, чтобы направлять оптимизатор запросов.Это безопасно для запуска в любое время, оно на мгновение заблокирует эту таблицу, но это не будет больше независимо от размера таблицы.

...