Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3517|Ответ: 1

[Чаевые] [Transfer] в MySQL Advanced: команда optimize table

[Скопировать ссылку]
Опубликовано 17.06.2023 11:40:34 | | |
При использовании MySQL вы можете заметить, что хотя таблица удаляет много данных, файлы данных и индексные файлы таблицы странно малы. Это связано с тем, что при удалении данных (особенно текста и BLOB) mysql оставляет множество пробелов в данных, которые занимают пространство исходных данных, поэтому размер файла не меняется. Эти отверстия могут быть повторно использованы в будущем при вставке данных, и, конечно, они могут оставаться там. Это отверстие не только увеличивает стоимость хранения, но и снижает эффективность сканирования таблицы за счёт фрагментации данных.

Сценарии использования:Если вы удалили большую часть таблицы или внесли много изменений в таблицу со строками переменной длины (с столбцами VARCHAR, BLOB или TEXT), используйте OPTIMIZE TABLE. Удалённые записи хранятся в связанном списке, а последующие операции INSERT повторно используют старое местоположение записи. Вы можете использовать OPTIMIZE TABLE для перепрофилирования неиспользуемого пространства и организации фрагментов файлов данных. [Когда большое количество данных удаляется из вашей библиотеки, вы можете заметить, что размер файла данных не уменьшается. Это связано с фрагментацией, оставшейся в файле данных после операции удаления.


В большинстве настроек запускать OPTIMIZE TABLE вообще не нужно. Даже если вы часто обновляете строки с переменной длиной, их не нужно часто запускать — раз в неделю или раз в месяц, только для конкретных таблиц.

OPTIMIZE TABLE работает только для таблиц MyISAM, BDB и InnoDB.

Для таблиц BDB таблица OPTIMIZE в настоящее время сопоставлена с таблицей ANALYZE. Для таблиц InnoDB таблица OPTIMIZE связана с таблицей ALTER, которая восстанавливает таблицу. Операции восстановления, обновление индексной статистики и освобождение неиспользуемого пространства в кластерных индексах.

Примечание: MySQL блокирует таблицу во время запуска OPTIMIZE TABLE.

Для Myisam можно напрямую использовать таблицу оптимизации table.name,Когда речь идёт о движке InnoDB, он сообщает: «Таблица не поддерживает оптимизацию, вместо этого делаю recreate + analyze», и в обычных условиях, если вы конвертируете из myisam в innodb, вы используете alter table table.name engine='innodb' для конвертации, и это также можно использовать для оптимизации.Поэтому, когда речь идёт о движке InnoDB, можно использовать alter table table.name engine='innodb' вместо оптимизации для оптимизации

Чтобы просмотреть эффекты до и после просмотра, можно использовать команду статуса показать таблицу, например, статус таблицы из [базы данных], например, '[table_name]'; data_free в результате возврата — это пространство для хранения, занятое пустотой.

Скрипт оболочки, реализующий восстановление пакетной таблицы MySQL с таймером и таблицу оптимизации таблицы оптимизации, выглядит следующим образом:

Исходный текст:

Вход по гиперссылке виден.
Вход по гиперссылке виден.




Предыдущий:Используйте инструмент инфильтрации SQLMAP для тестирования SQL injection
Следующий:Руководство по установке Consul в тестовой среде Windows
 Хозяин| Опубликовано 06.07.2023 18:54:17 |
--Контрольный перечень


-- Приготовь стол


-- Оптимизировать таблицу


Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com