sql >> Databasteknik >  >> RDS >> Mysql

Snabbare konvertering från MyISAM till InnoDB

  • Ange en stor innodb_buffer_pool_size (2 GB eller mer)
  • förläs dina gamla myisam-data/indexfiler med hjälp av skalkommandon
  • öka innodb_log_file_size (256 MB)
  • Gör ändringstabellen i X parallella trådar, där X är antalet CPU-kärnor på din server
  • andra mindre justeringar endast för konvertering (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

att sätta innodb_buffer_pool_size så högt som möjligt är det typiska sättet att påskynda skapande av innodb-tabeller - din datauppsättning ser ut att kunna passa in i en 2 GB innodb buffertpool, så vilken anständig 64-bitars server som helst bör tillåta det. alter table type=innodb är också snabbare än dump+reimport-lösning och är lätt att köra parallellt.

Se också till att du har ökat innodb_log_file_size från standardvärdet 5 Mb till 128 eller 256 MB. Var försiktig med det, och det behöver en ren avstängning + radera den gamla ib_logfilen*.

Om din server har något i stil med 8 GB ram och att du kör en 64-bitars version av mysql skulle jag föreslå en 2 GB innodb_buffer_pool, och du kan till och med förläsa de gamla MYD- och MYI-filerna innan du stänger för driftstopp, så att de finns i OS:s sidcache när det riktiga arbetet börjar.

Om du också väljer de mindre justeringarna, tänk på att du måste ångra dem efter konverteringen (en annan liten stilleståndstid) för att din data ska vara säker, men jag tvivlar på att de är värda det för en så liten datamängd.

Lycka till.



  1. Hur man kör en enkel MYSQL-fråga med rails

  2. Hur får man MySQL att hantera strängar som SQLite gör, med hänsyn till Unicode och sortering?

  3. mysql återställning till annan databas

  4. Använder $_SESSION för att överföra data