- L'impostazione di un grande innodb_buffer_pool_size (2 GB o più)
- preread i file MyISAM dati/index vecchi utilizzando comandi della shell
- aumento innodb_log_file_size (256 MB)
- fare la tabella alter in thread paralleli X, dove X è il qty di core della CPU sul server
- altre modifiche minori per la conversione solo (innodb_doublewrite = 0, innodb_flush_log_at_trx_commit = 0)
impostando innodb_buffer_pool_size il più alto possibile è il modo tipico per accelerare la creazione di tabelle innodb - il set di dati sembra che possa stare all'interno di un pool di buffer innodb da 2 GB, quindi qualsiasi server decente a 64 bit dovrebbe consentirlo. alter table type = innodb è anche più veloce della soluzione dump + reimport ed è facile da eseguire in parallelo.
Assicurarsi inoltre di aver aumentato il parametro innodb_log_file_size dal valore predefinito di 5 Mb a 128 o 256 MB. Attenzione a questo, e ha bisogno di un arresto pulito + cancellando il vecchio ib_logfile *.
Se il server ha qualcosa come 8GB di ram e si esegue una versione a 64 bit di mysql, suggerirei un innodb_buffer_pool da 2 GB, e si possono anche rileggere i vecchi file MYD e MYI prima di chiudere per i tempi di inattività, in modo che sarà nella cache della pagina del sistema operativo all'avvio del vero lavoro.
Se si apportano anche piccole modifiche, si prega di tenere presente che è necessario annullarle dopo la conversione (un altro piccolo tempo di inattività) per proteggere i dati, dubito che valga la pena per un set di dati così piccolo.
Buona fortuna.
Vorrei che sia più veloce di ALTER TABLE nome_tabella ENGINE = InnoDB ;? Perché? – knorv
Potrebbe * essere più veloce in quanto non è necessario ricostruire gli indici nello stesso modo. (Se osservate il file di dump vedrete che gira l'indicizzazione, fa tutti gli inserimenti e quindi riabilita l'indicizzazione su una base per tabella.) Detto questo, immagino che ALTER TABLE lo farebbe anche ad essere onesti. –
La riattivazione degli indici dopo il caricamento del dump dura per sempre su InnoDB, quindi non sarebbe molto più veloce - ci ho già provato. –