Ú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;