sql >> Databáze >  >> RDS >> Mysql

Urychlení převodu z MyISAM na InnoDB

  • Nastavení velké innodb_buffer_pool_size (2 GB nebo více)
  • Přečtěte si své staré datové/indexové soubory myisam pomocí příkazů shellu
  • zvýšit innodb_log_file_size (256 MB)
  • Proveďte změnu tabulky v X paralelních vláknech, kde X je počet jader CPU na vašem serveru
  • další drobné úpravy pouze pro převod (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

nastavení innodb_buffer_pool_size na co nejvyšší hodnotu je typický způsob, jak urychlit vytváření tabulek innodb – vaše datová sada vypadá, že by se vešla do 2GB innodb buffer poolu, takže by to měl umožňovat každý slušný 64bitový server. alter table type=innodb je také rychlejší než řešení dump+reimport a lze jej snadno spouštět paralelně.

Také se ujistěte, že jste zvýšili innodb_log_file_size z výchozích 5Mb na 128 nebo 256MB. Buďte s tím opatrní a potřebuje čisté vypnutí + vymazání starého ib_logfile*.

Pokud má váš server něco jako 8 GB paměti RAM a používáte 64bitovou verzi mysql, navrhoval bych 2 GB innodb_buffer_pool a dokonce si můžete před zavřením z důvodu výpadku přečíst staré soubory MYD a MYI, takže budou v Mezipaměť stránek OS, když začne skutečná práce.

Pokud se také pustíte do drobných úprav, mějte prosím na paměti, že je po konverzi musíte vrátit zpět (další malý výpadek), aby byla vaše data v bezpečí, pochybuji však, že za tak malý soubor dat stojí.

Hodně štěstí.



  1. Existuje nějaký rozdíl mezi !=a <> v Oracle Sql?

  2. MySQL:vrátí aktualizované řádky

  3. Jak předat proměnnou null do uložené procedury SQL z kódu C#.net

  4. Date Difference v MySQL pro výpočet věku