Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Beschleunigung der Konvertierung von MyISAM zu InnoDB

  • Festlegen einer großen innodb_buffer_pool_size (2 GB oder mehr)
  • Lesen Sie Ihre alten myisam-Daten/Indexdateien mit Shell-Befehlen vor
  • innodb_log_file_size erhöhen (256 MB)
  • Führen Sie die Änderungstabelle in X parallelen Threads aus, wobei X die Anzahl der CPU-Kerne auf Ihrem Server ist
  • andere kleinere Anpassungen nur für die Konvertierung (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

Innodb_buffer_pool_size so hoch wie möglich zu setzen, ist der typische Weg, um die Erstellung von Innodb-Tabellen zu beschleunigen - Ihr Datensatz sieht so aus, als könnte er in einen 2-GB-Innodb-Pufferpool passen, daher sollte jeder anständige 64-Bit-Server dies zulassen. alter table type=innodb ist auch schneller als die Lösung dump+reimport und kann einfach parallel ausgeführt werden.

Stellen Sie außerdem sicher, dass Sie die innodb_log_file_size von der Standardeinstellung von 5 MB auf 128 oder 256 MB erhöht haben. Seien Sie vorsichtig damit, und es braucht ein sauberes Herunterfahren + Löschen der alten ib_logfile*.

Wenn Ihr Server über etwa 8 GB RAM verfügt und Sie eine 64-Bit-Version von mysql ausführen, würde ich einen 2 GB großen innodb_buffer_pool vorschlagen, und Sie können sogar die alten MYD- und MYI-Dateien vorab lesen, bevor Sie sie für Ausfallzeiten schließen, damit sie in der Seiten-Cache des Betriebssystems, wenn die eigentliche Arbeit beginnt.

Wenn Sie sich auch für die kleineren Optimierungen entscheiden, denken Sie bitte daran, dass Sie sie nach der Konvertierung (eine weitere kleine Ausfallzeit) rückgängig machen müssen, um Ihre Daten sicher zu haben. Ich bezweifle jedoch, dass sie sich für einen so kleinen Datensatz lohnen.

Viel Glück.