Mysql
 sql >> Database >  >> RDS >> Mysql

Accelerare la conversione da MyISAM a InnoDB

  • Impostazione di un innodb_buffer_pool_size grande (2 GB o più)
  • preleggi i tuoi vecchi file di dati/indice myisam usando i comandi della shell
  • aumentare innodb_log_file_size (256 MB)
  • Esegui la modifica della tabella in X thread paralleli, dove X è la quantità di core della CPU sul tuo server
  • altre modifiche minori solo per la conversione (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

impostare innodb_buffer_pool_size il più alto possibile è il modo tipico per accelerare la creazione di tabelle innodb:il tuo set di dati sembra che possa adattarsi a 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.

Assicurati inoltre di aver aumentato innodb_log_file_size dal valore predefinito di 5 Mb a 128 o 256 MB. Attento a questo, e ha bisogno di uno spegnimento pulito + cancellazione del vecchio ib_logfile*.

Se il tuo server ha qualcosa come 8 GB di ram e esegui una versione a 64 bit di mysql, ti suggerirei un innodb_buffer_pool da 2 GB e puoi persino preleggere i vecchi file MYD e MYI prima di chiudere per i tempi di inattività, in modo che siano nel Cache della pagina del sistema operativo quando inizia il lavoro vero e proprio.

Se scegli anche le modifiche minori, tieni presente che devi annullarle dopo la conversione (un altro piccolo tempo di inattività) per avere i tuoi dati al sicuro, dubito che ne valga la pena per un set di dati così piccolo.

Buona fortuna.