Perché l'importazione di un file di 12 GB .sql durare più di 36 ore?
Domanda
Sono stato in attesa ora per 36 ore per il file di 12 GB sql da importare con un semplice comando type site.sql | mysql
. Posso vedere la ibdata1
cresce ancora, attualmente quasi 40 GB.
Considerando i trigger e stored procedure sono alla fine del sql, ho solo pensare MySQL dovrebbe essere l'aggiunta di dati e gli indici principali.
Il site.sql è stata generata utilizzando questo comando da un altro server:
mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers
Che cosa sta prendendo così tanto tempo?
Soluzione
Prova questo:
$ ps -ef|grep [m]ysql
Identificare l'ID del processo, allora
$ strace -cp <pid>
Lascia fare 10 secondi o un minuto poi ^C
. Che vi dirà dove il processo sta spendendo il suo tempo, per esempio potrebbe essere solo in attesa del disco se hai visto read
e write
dominare.
Altri suggerimenti
Avete delle tabelle InnoDB con una chiave primaria
- contenente più colonne?
- avere una vasta VARCHAR?
- e un sacco di indici non univoci?
- uno o più non univoco indici che ha una chiave un'ampia?
Qualsiasi di queste condizioni può probabilmente causare grandi nodi btree a indici di avere pochissime foglie in ogni nodo BTREE. La chiave del cluster nella chiave primaria è anche collegato a ogni voce chiave non univoca nelle chiavi non cluster.
Un'altra considerazione:? Sono la somma di pagine di dati InnoDB significativamente inferiore pagine di indice InnoDB
È possibile scoprire che con questa query (in MB):
SELECT SUM(data_length)/POWER(1024,2) InnoDBData,
SUM(index_length)/POWER(1024,2) InnoDBIndexes
FROM information_schema.tables WHERE engine='InnoDB';
Ulteriori considerazione: Avete il log binario abilitata nel server di database che si sta caricando? Se siete, si prega di fare questo sul server che si sta caricando:
mysql -h... -u... -p... -A -e"SET sql_log_bin=0; source site.sql"
Spero che questo aiuta !!!
Sei sicuro che le tabelle in cui si sta leggendo in sono senza trigger e indici e vincoli? Quale hardware e OS sono in esecuzione su? Qual è la configurazione di archiviazione?
Sono più familiarità con Oracle, ma 12G importazione su tabelle senza trigger, indici e vincoli dovrebbe facilmente andare con 200 GB / h. Un unico grilletto può rendere il processo ad una lumaca, a seconda di ciò che fa scattare lo fa ...
Spero che questo aiuta ??p>