sql >> Database >  >> RDS >> Mysql

Conversie versnellen van MyISAM naar InnoDB

  • Een grote innodb_buffer_pool_size instellen (2GB of meer)
  • lees uw oude myisam-gegevens/indexbestanden voor met behulp van shell-opdrachten
  • innodb_log_file_size (256 MB) vergroten
  • Voer de wijzigingstabel uit in X parallelle threads, waarbij X het aantal CPU-kernen op uw server is
  • andere kleine aanpassingen alleen voor conversie (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

innodb_buffer_pool_size zo hoog mogelijk instellen is de typische manier om het maken van innodb-tabellen te versnellen - je dataset ziet eruit alsof hij in een innodb-bufferpool van 2 GB zou kunnen passen, dus elke fatsoenlijke 64-bits server zou dat moeten toestaan. alter table type=innodb is ook sneller dan de dump+reimport-oplossing en kan gemakkelijk parallel worden uitgevoerd.

Zorg er ook voor dat je de innodb_log_file_size hebt verhoogd van de standaardwaarde van 5Mb naar 128 of 256MB. Wees daar voorzichtig mee, en het heeft een schone afsluiting nodig + het wissen van het oude ib_logbestand*.

Als uw server ongeveer 8 GB RAM heeft en u een 64-bits versie van mysql gebruikt, zou ik een innodb_buffer_pool van 2 GB aanraden, en u kunt zelfs de oude MYD- en MYI-bestanden voorlezen voordat ze worden gesloten voor downtime, zodat ze in de OS's paginacache wanneer het echte werk begint.

Als je ook voor de kleine aanpassingen gaat, houd er dan rekening mee dat je ze na de conversie (nog een kleine downtime) ongedaan moet maken om je gegevens veilig te houden, maar ik betwijfel of ze het waard zijn voor zo'n kleine dataset.

Veel succes.



  1. Oracle-app bekijken en ophalen:java.lang.ClassNotFoundException:oracle.forms.engine.Main

  2. java.lang.ClassNotFoundException:org.postgresql.Driver, Android

  3. RowGen v3 automatiseert het genereren van databasetestgegevens

  4. Bereken het percentage van de wortel dat eigendom is van de ouders