Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 3517|Отговор: 1

[Бакшиши] [Прехвърляне] към MySQL Advanced: команда optimize table

[Копирай линк]
Публикувано в 17.06.2023 г. 11:40:34 ч. | | |
Когато използвате mysql, може да откриете, че макар таблицата да изтрива много данни, файловете с данни и индексните файлове в таблицата са странно малки. Това е така, защото mySQL ще остави много пропуски в данни при изтриване на данни (особено Text и BLOB), които заемат мястото на оригиналните данни, така че размерът на файла не се променя. Тези дупки могат да бъдат използвани повторно в бъдеще при въвеждане на данни, и разбира се, те може да останат там. Тази дупка не само увеличава разходите за съхранение, но и намалява ефективността на сканиране на таблицата поради фрагментация на данните.

Сценарии на употреба:Ако сте изтрили голяма част от таблицата или сте направили много промени в таблица с редове с променлива дължина (една с VARCHAR, BLOB или TEXT колони), трябва да използвате OPTIMIZE TABLE. Изтритите записи се съхраняват в свързания списък, а последващите операции INSERT използват отново старото местоположение на записа. Можете да използвате OPTIMIZE TABLE, за да пренасочите неизползваното пространство и да организирате фрагменти от файлове с данни. [Когато голямо количество данни бъде изтрито от вашата библиотека, може да забележите, че размерът на файла с данни не е намалял. Това се дължи на фрагментацията, останала във файла с данни след операцията по изтриване.


В повечето ситуации изобщо не е нужно да пускаш OPTIMIZE TABLE. Дори и да правите много обновявания на редове с променлива дължина, не е нужно да ги пускате често, веднъж седмично или веднъж месечно, само за конкретни таблици.

OPTIMIZE TABLE работи само за MyISAM, BDB и InnoDB таблици.

За BDB таблиците OPTIMIZE TABLE в момента е съпоставена с ANALYZE TABLE. За таблиците на InnoDB таблицата OPTIMIZE се съпоставя с ALTER TABLE, която възстановява таблицата. Операциите по преизграждане, актуализиране на индексната статистика и освобождаване на неизползвано пространство в клъстерирани индекси.

Забележка: MySQL заключва таблицата по време на изпълнение на OPTIMIZE TABLE.

За myisam можете директно да използвате таблицата за оптимизация table.name,Когато става дума за InnoDB енджин, той ще отчете "Таблицата не поддържа оптимизация, вместо това се прави recreate + analyze", и при нормални обстоятелства, ако конвертирате от myisam към innodb, ще използвате alter table table.name engine='innodb' за конвертиране, и можете да използвате това и за оптимизация.Следователно, когато става дума за InnoDB енджин, можем да използваме alter table table.name engine='innodb' вместо optimize for optimization

За да видите ефектите преди и след това, можете да използвате командата "show table status", например show table status от [database] като '[table_name]'; data_free в резултата от връщането е пространството за съхранение, заето от празнотата.

Shell скриптът, който реализира MySQL таймериран ремонт на batch check table и optimize table optimize table, е следният:

Оригинален:

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.




Предишен:Използвайте инструмента за инфилтрация на SQL инфилтрацията на SQL инфилтрацията за тестване
Следващ:Урок за инсталация на Consul в тестова среда на Windows
 Хазяин| Публикувано в 6.07.2023 г. 18:54:17 ч. |
--Списък


-- Оправи масата


-- Оптимизирай таблицата


Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com