Přeskočit obsah

Údržba tabulek v MariaDB

Tabulky v databázi vyžadují průběžnou údržbu. Pokud tato údržba není prováděna, bude postupně klesat výkon databáze. V extrémních případech se databáze může při velké zátěži až zastavit.

Operace údržby si může každý klient provádět sám průběžně. U velkých databází ( desítky GB a více ) je vhodnější domluvit servisní okno s naší technickou podporou a potřebnout údržbu provedeme.

Tabulky MyISAM - tyto tabulky jsou hodně jednoduché, nepodporují transakce a další pokročilé funkcionality. Nad tabulkami kde se často mění data je potřeba spouštět příkaz OPTIMIZE TABLE a ANALYZE TABLE. První příkaz provede reorganizaci dat v tabulce. Druhým příkazem se provede analýza dat uvnitř - tato data využívá databáze, aby byl vytvořen optimální query plán, tedy sql dotaz proběhl co nejrychleji. Pozor, stejně jako každá zápisová operace v MyISAM i tyto příkazy zamykají po dobu běhu celou tabulku. Je proto vhodné tyto příkazy spouštět v době, kdy je nad databází minimální provoz, nebo je odstavena aplikace, která s daty pracuje.

Tabulky InnoDB - pokročilé tabulky s transakcí. Při zápisových operacích je zámek pouze nad daty se kterými se pracuje a ne nad celou tabulkou. I nad touto tabulkou je možné spustit OPTIMIZE TABLE.  Tento příkaz není však nativně podporovný a tabulka provede jiné operace vedoucí ke stejnému výsledku - příkaz vrátí hodnotu:

Table does not support optimize, doing recreate + analyze instead 

Tabulky Innodb je třeba občas defragmentovat. K tomu se používá příkaz ALTER TABLE, ve kterém tabulce nastavíte znovu engine na InnoDb.

ALTER TABLE nazevtabulky ENGINE=InnoDb;