Üzemeltetek néhány szervert, közöttük van néhányon MySQL is. Nyilvánvalóan néhány tábla InnoDB-t használ, ami alapból nem a legjobban van beállítva. Ha nincs túl sok helyed, vagy csak nem szereted a helypazarlást az InnoDB alapbeállítása okozhat némi fejfájást. A fejlesztők úgy gondolták, hogy minden egyes InnoDB tábla adata egy közös file-halmazba (alapból egyetlen file) kerüljön. A MyISAM minden táblához egy saját file-t hoz létre, így mikor optimalizáljuk a táblát a törölt rekordok és hasonlók által elfoglalt helyet visszakapjuk, visszakerül az OS-hez. Ezzel szemben az InnoDB nem tud ilyet, mert a táblék adatai szétszórva vannak a közös file(ok)-ban, így hiába törlünk és optimalizálunk, nem szabadul fel hely az OS számára. Ez egyetlen megoldás, hogy csinálunk egy dump-ot az összes adatbázisról, töröljük az adatbázisokat, leállítjuk a MySQL-t, belerakjuk a innodb_file_per_table=true paramétert a my.cnf [mysqld] szekciójába, letöröljük az ib_logfilen és ibdatan file-okat, elindítjuk a MySQL-t és betöltjük a dump-okat. Ettől az InnoDB is úgy fog viselkedni, mint a MyISAM, egy külön file-t hoz létre minden táblához. Alternatívaként elég lenne csak az InnoDB táblákat dump-olni, drop-olni, és újra betölteni, de ez lehet nem túl hatékony a táblák számától függően. 🙂
-
Legutóbbi bejegyzések
Legutóbbi hozzászólások
Archívum
Címkék
Kategóriák
RSS
Belépés
-