/ / Come velocizzare il caricamento dei dati in InnoDB (LOAD DATA INFILE)? - mysql, import, innodb, load-data-infile

Come velocizzare il caricamento dei dati in InnoDB (LOAD DATA INFILE)? - mysql, import, innodb, load-data-infile

Voglio velocizzare il caricamento dei dati.

Uso MySQL 5.5, InnoDB e ho file 1M di dati (file 65Mb). Ci vogliono 5 minuti.

Quali impostazioni e comandi di mysql influiscono sulla velocità di LOAD DATA INFILE per InnoDB?

Grazie.

risposte:

19 per risposta № 1

Posso consigliare queste impostazioni per migliorare il tempo di caricamento:

  • innodb_doublewrite = 0
  • innodb_support_xa = 0
  • innodb_buffer_pool_size = (50-80% della memoria di sistema)
  • innodb_log_file_size = (un numero elevato - 256 M ecc.)
  • innodb_flush_log_at_trx_commit = 0

Oltre alle impostazioni, ci sono alcune cose che puoi fare da te:

  • Crea indici dopo il caricamento (questa è una nuova ottimizzazione con il plugin 5.5 / InnoDB).
  • Ordina il file di dati prima di caricarlo.
  • Dividere il file di dati e caricare in parallelo.

4 per risposta № 2

Prova a rimuovere indici e trigger. Puoi ricrearli dopo il caricamento. Osserva anche l'uso di alcune delle impostazioni di alto carico in my-huge.cnf invece dei valori predefiniti.

Alcune impostazioni di prestazioni più inedite:

http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/


2 per risposta № 3

Questo potrebbe non essere esattamente quello che stai cercando, ma è un trucco che ho usato in passato

ALTER TABLE TABLE_NAME DISABLE KEYS;
LOAD DATA INFILE ... ;
ALTER TABLE TABLE_NAME ENABLE KEYS;

Spero che sia d'aiuto.


0 per risposta № 4

Assicurarsi inoltre che la registrazione binaria sia disabilitata, se possibile.


0 per risposta № 5

Se hai fretta perché stai sostituendo il contenuto di una tabella live, fallo invece in questo modo:

CREATE TABLE new LIKE live;
LOAD DATA ... INTO new;
RENAME TABLE live TO old, new TO live;
DROP TABLE old;

Il RENAME è "istantaneo" e atomico, quindi non si "mai" verso il basso, indipendentemente dalle dimensioni della tabella.

(Quindi non c'è bisogno di preoccuparsi così tanto di accelerare il LOAD.)