Подтвердить что ты не робот

Как я могу перестроить индексы и обновить статистику в MySQL innoDB?

У меня есть опыт работы с сервером MS SQL, где возможно и полезно статистика обновления и перестроить индексы. Я не могу найти такой вариант в MySQL innoDB, есть ли такая опция? Если нет, то как MySQL-база данных создает план выполнения? Обновляет ли индекс MySQL и статистику с каждым UPDATE и INSERT?

4b9b3361

Ответ 1

Это делается с помощью

ANALYZE TABLE table_name;

Подробнее об этом .

ANALYZE TABLE анализирует и сохраняет распределение ключей для таблицы. Во время анализа таблица блокируется с блокировкой чтения для MyISAM, BDB и InnoDB. Это выражение работает с таблицами MyISAM, BDB, InnoDB и NDB.

Ответ 2

Почему? Почти никогда не нужно обновлять статистику. Еще более необходимо восстановить индекс.

OPTIMIZE TABLE tbl; будет восстанавливать индексы и делать ANALYZE; требуется время.

ANALYZE TABLE tbl; быстро для InnoDB перестроить статистику. С 5.6.6 он еще менее необходим.

Ответ 3

Вы также можете использовать предоставленный инструмент CLI mysqlcheck для запуска оптимизации. Он получил тонну переключателей, но по своему самому основному вы просто переходите в базу данных, имя пользователя и пароль.

Добавление этого в cron или Windows Scheduler может сделать это автоматическим процессом. (MariaDB, но в основном то же самое.)