lightbulb Optimalizace databáze (OPTIMIZE TABLE)

  • Danko Velovský (Duvel)
  • Avatar uživatele Danko Velovský (Duvel) Autor tématu
  • Offline
  • Pokročilý
  • Pokročilý
Více
08. bře 2019 09:24 #391 od Danko Velovský (Duvel)
Optimalizace databáze (OPTIMIZE TABLE) vytvořil uživatel Danko Velovský (Duvel)
Jak provést optimalizaci tabulek v databázi MySQL

OPTIMIZE TABLE

- odstraní z tabuky nepotřebná data po úkonech jako je mazání, rozdělování řádků, opravy v tabulce
- setřídí indexy
- zaktualizuje statistiky

Pokud nad tabulkou neprobíhají výše uvedené operace není z pravidla potřeba ji optimalizovat.

Spuštěním příkazu:
OPTIMIZE TABLE `nazev_tabulky`;
provedete optimalizaci tabulky.

Z tabulky se odstraní prázdné řádky, které tam zůstaly po mazání a následně provede setřízení indexů a aktualizaci statistik.

Na filesystémů, kde si zobrazíte přehled všech tabulek (souboru) po spuštění této akce přibude soubor s názvem podobný tomuto #sql-ib1745-3689028624.ibd

Při spouštění optimalizace nad tabulkou mající 68GB se vytvořil výše uvedený soubor, který rostl až do výše 50GB a poté se zastavil. Na souboru se mění datum jelikož provádí setřízení indexů a optimalizaci statistik a dalo by se to považovat za výslednou velikost po optimalizaci +-pár MB navíc.

Tabulka v našem případě byla sražena o 18GB což je veliká úspora a projeví se na běhu obratem ať už v rychlosti provádění DUMPu či jiných úkonech nad touto tabulkou.

Upozornění: Příkaz pro optimalizaci tabulky danou tabulku zamkne a nepustí do ni nikoho. Ideální je však zastavení aplikace nahlížející do databáze před touto akcí.

Časově se to může velice lišit. V našem případě se jednalo o čas 4h.

po dokončení by měl vypadat výstup nějak takto:
Table   Op      Msg_type        Msg_text
nazev_db.nazeb_tabulky  optimize        note    Table does not support optimize, doing recreate + analyze instead
nazev_db.nazeb_tabulky  optimize        status  OK

Prosím Přihlásit se nebo Vytvořit účet připojte se ke konverzaci.

Přihlášení