Jaké má výhody inodb oproti myisam se píše všude možně.
Nyní se testuji přechod na myisam a nárážím na podstatné nevýhody inodb, o který se ale téměř nikdo nezmiňuje.
Začal jsem tím, že pomocí mysqldump jsem provedl export databáze.
Import ale netrval cca dvě hodiny jako u myisam, ale celý víkend.
Problém je v tom, že inodb nepodporuje ALTER TABLE DISABLE KEYS, které použije mysqldump pro zrychlení importu.
To že ALTER TABLE DSIBLE KEYS funguje jen na zastaralé myisam je jaksi špatně zdokumentováno jen tak mimochodem, jako by to bylo něco nepodstatného.
Výsledek je že se updatují klíče po každém INSERT, což operaci hrozně zpomaluje a ničí se při tom disky.
Zrychlit import lze také provedením příkazů před importem:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
Po importu
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
Dobré řešení je vytvořit tabulku bez indexů. Nalít tam data a indexy vytvořit až úplně nakonec.
Ale zdá se takový postup mysqldump nepodporuje a nezbývá než ručně editovat SQL příkazy, aby se indexy vytvořili až po importu. Což je krajně nepohodlné.
Existuje nějaký elegantnější způsob jak obnovit databázi ze zálohy, aby se rychlost alespoň řádově blížila běžné rychlosti tabulek myisam?
Překvapuje mne, že mysqldump nemá na takové použitý vůbec volby. A nemá volby ani na to, aby každou tabulku ukládal do jiného souboru (strukturu a data zvlášť), aby bylo možné ruční zásahy dělat snadněji.
Jaké další nevýhody a nedodělky má inodb o kterých se běžně nepíše?
Existuje něco lepšího než mysqldump, který by lépe pracoval s nedostatky inodb?
Předpokládám, že nikdo nechce čekat desítky minut nebo dokonce dny na obnovení databáze ze zálohy na novém stroji úplně zbytečně.