Mysql-t használva előfordulhat, hogy bár egy tábla sok adatot törlik, a táblázat adatfájljai és indexfájljai furcsán kicsik. Ez azért van, mert a mysql sok adatlyukat hagy maga után az adatok törlése (különösen a szöveg és a BLOB), amelyek elfoglalják az eredeti adat helyét, így a fájlméret nem változik. Ezeket a lyukakat a jövőben újra felhasználhatják az adatok behelyezésekor, és természetesen ott is maradhatnak. Ez a lyuk nemcsak a tárolási költséget növeli, hanem az adatok töredezettsége miatt csökkenti a tábla szkennelési hatékonyságát is.
Használati forgatókönyvek:Ha a tábla nagy részét törölted, vagy sok változtatást eszközöltél egy változó hosszúságú sorú táblán (például VARCHAR, BLOB vagy TEXT oszlopokkal), akkor használd az OPTIMIZE TABLE opciót. A törölt rekordokat a linkelt listában tartják, és a későbbi INSERT műveletek újra felhasználják a régi rekordhelyet. Az OPTIMIZE TABLE segítségével újrahasznosíthatod a kihasználatlan teret és rendszerezheted az adatfájlok töredékeit. [Ha nagy mennyiségű adatot törölsz a könyvtáradból, előfordulhat, hogy az adatfájl mérete nem csökkent. Ez az adatfájlban a törlési művelet után maradt töredékek miatt van.
A legtöbb beállításban egyáltalán nem kell futtatnod az OPTIMIZE TABLE-t. Még ha sok változtatáshosszú sorokat is frissítesz, nem kell gyakran futtatnod őket, hetente egyszer vagy havonta egyszer, csak bizonyos táblákhoz.
Az OPTIMIZE TABLE csak MyISAM, BDB és InnoDB táblákhoz működik.
BDB táblák esetén az OPTIMIZE TABLE jelenleg az ANALYZE TABLE-hoz van leképezve. Az InnoDB táblák esetén az OPTIMIZE TABLE az ALTER TABLE-hoz van leképezve, amely újraépíti a táblát. Újraépíti a műveleteket, frissíti az index-statisztikákat, és felszabadítja a kihasználatlan helyet a klaszterezett indexekben.
Megjegyzés: A MySQL zárolja a táblát az OPTIMIZE TABLE futtatás során.
Myisamhoz közvetlenül használhatod az Optimize Table table.name-t,Ha az InnoDB motorról van szó, azt fogja jelenteni: "A tábla nem támogatja az optimalizálást, helyette recreate + elemzést teszünk", és normál körülmények között, ha a myisamról az InnoDB-re konvertálsz, az alter table table.name engine='innodb' opciót használod a konvertáláshoz, és ezt is használhatod optimalizálásra.Ezért, ha az InnoDB motorról van szó, használhatjuk az alter table table.name engine='innodb' opciót az optimalizálás helyett。
A before és after effektek megtekintéséhez használhatod a show table status parancsot, például a [database] állapot megjelenítését, például '[table_name]'; A visszaküldés eredményének data_free az űr által elfoglalt tárolóhely.
A shell szkript, amely a MySQL időzített batch ellenőrző táblázat javítását és táblázatoptimalizálását valósítja meg, a következő:
Eredeti:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
|