Stránka 1 z 1

Optimalizace databáze v mariadb/mysql

Napsal: pát 17. úno 2017 12:39:32
od RoliD
Je velmi vhodné občas zoptimalizovat (a také defragmentovat) databáze.  Hlavně po větších změnách a mazáních zůstávají v databázích smazaná data. Databáze je totiž nemaže hned jak se provede příkaz ale porstě je jen označí jako smazané a odstraní se například při nejbližší optimalizaci. Netuším jak to má mariadb v sobě udělané, ale pokud např smažu z 10GB databáze 2GB dat, tak i po několika týdnech vidím že stále v databázi tato data zabírají místo a tedy i je pomalejší běh selectů do této databáze. Jak tedy tato data odstranit? Stačí provést příkaz který optimalizuje jednu tabulku:

Kód: Vybrat vše

OPTIMIZE TABLE `jedna_tabulka`
"OPTIMIZE TABLE" je sql příkaz do sql konzole. V PhpMyAdminu či admineru jsou na optimalizaci konkrétní klikátka. Pokud ale optimalizujete větší databázi, typicky nad 1GB tak už je lepší (pokud máte možnost) z linux příkazové řádky spustit k tomu určenou toolu:

Kód: Vybrat vše

mysqlcheck -u uzivatel -p -o -v jmeno_databaze jmeno_tabulky
Tento příkaz má zaplý switch -v verbose tedy upovídanost. Vypisuje vám jakou tabulku zrovna optimalizuje.