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

Come inserire un numero molto elevato di record in un database MySql il più velocemente possibile

Esistono diversi modi per ottimizzare gli inserti sfusi. Alcuni sono:

  • LOAD DATA INFILE . Esiste una API wrapper per . RETE . Questo è il modo più veloce, ma presenta alcune limitazioni e differenze semantiche rispetto ai semplici inserti.

  • INSERT a più righe dichiarazioni:

    INSERT INTO temperature (temperature) VALUES (1.0), (2.0), (3.0), ...

    Non dovresti inserire 20.000.000 di righe contemporaneamente, ma potresti voler provare 1.000-10.000 per un aumento di velocità molto elevato. Questo è un modo semplice e molto non problematico per aumentare la velocità. Spesso è possibile un fattore 10 e talvolta molto di più.

  • Blocco della tabella (LOCK TABLES ).

  • Disabilitazione temporanea degli indici.

  • Ottimizzazione delle opzioni MySQL.

  • INSERT DELAYED (molto probabilmente non così utile qui).

La documentazione fornisce dettagli più elaborati sulle opzioni. Alcune opzioni dipendono dal tipo di tabella (InnoDB rispetto a MyISAM ).

Un suggerimento generale:specifica sempre le colonne che inserisci davanti a VALUES . Questo rende il codice più gestibile.