2010-06-02 5 views
6

La mia importazione di SQL tramite la console MySQL è piuttosto lenta e, dato che il nostro file SQL è in aumento ogni giorno, vorrei sapere se ci sono alternative su come importare un File SQL più veloceConsole MySQL lenta sull'importazione di enormi file SQL

Il passaggio a Oracle o ad altri sistemi non è un'opzione, la configurazione deve rimanere invariata.

Attualmente il file SQL è: 1,5 GB. Sono allo WAMP con Apache 2.2.14, PHP 5.2.11 e MySQL 5.1.41.

Forse il problema è qui, l'importazione è fatto da un semplice:

mysql -u username -p dbname < sqlfilename.sql 

Qualche suggerimento?

+0

Si sta utilizzando mysqlimport o LOAD DATA INFILE ? –

+0

Questo è qualcosa che deve essere inserito nell'Sql se sono corretto, ciò non è possibile, in quanto non è possibile modificare un file Sql di 1,4 Gb in qualsiasi editor e proviene da una fonte esterna. – Kennethvr

+0

Può aiutare qualcuno: prima di tutto riavvia il computer, quindi disattiva i tuoi antivirus/firewall/tracker della larghezza di banda + eventuali altri programmi che non hai bisogno di eseguire. Ma disabilitando queste due cose ho aumentato la velocità come 6x. – Andrew

risposta

5

Avere indici abilitati durante l'importazione rallenterà il tuo server fino a una scansione. ALTER TABLE tablename DISABLE KEYS; e usando ..ENABLE KEYS prima e dopo l'importazione, migliorerai la velocità di importazione, ma ci vorrà del tempo per ricreare gli indici, quindi dopo tutto potrebbe non essere un grande guadagno di velocità.

Inoltre, forse l'utilizzo delle tabelle myisam (diversamente da innodb con le opzioni di integrità referenziale) di solito offre prestazioni migliori, in quanto non è coinvolto alcun costo di integrità referenziale.

Personalmente, non uso l'istruzione import dalla console mysql, ma importa i file sql usando mysql -uUSER -pPASS DBNAME < file.sql e funziona bene per me.

Spero che aiuti.

+0

è come sto andando in questo momento ... e non è veloce su enormi dati ... – Kennethvr

+1

Considera di usare il comando mysqlimport. Verrà preso un file flat che contiene dati in qualche formato separato tab-or-something-else e lo importerà direttamente nella tabella, più rapidamente dell'esecuzione di query SQL. –

+2

Vedere http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html per informazioni sul comando mysqlimport, se non si ha familiarità con esso. –

0

Non sono sicuro se questo risolverà il problema, perché non sono sicuro di dove sia il collo di bottiglia ... Tuttavia, sono rimasto davvero impressionato dallo strumento gratuito Toad for MySQL come console di gestione MySQL sostitutiva. Ha ottimi strumenti di importazione ed è generalmente miglio IMO migliore rispetto alla console di gestione standard di MySQL.

+0

qualcun altro ha esperienza con Toad su questo problema con enormi file di dati? – Kennethvr

+0

Il collegamento del rospo è interrotto ... – DrCord

+0

@DrCord - aggiornato. – UpTheCreek

1

commutazione autocommit spento è il primo di una serie di raccomandazioni fornite in Bulk Data Loading for InnoDB Tables per velocizzare le operazioni di ripristino per MySQL.

Invece di disattivare manualmente l'autocommit al momento del ripristino, è possibile scaricare i dati MySQL in un modo che includa tutte le istruzioni necessarie direttamente nel file SQL.

Il parametro della riga di comando per mysqldump è --no-autocommit. Si potrebbe anche considerare di aggiungere --opt che imposta una combinazione di altri parametri per accelerare le operazioni di ripristino.

Ecco un esempio di una riga di comando mysqldump completo come lo uso, contenente --no-autocommit e --opt:

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names MyDbName > dump.sql 

Per i dettagli su questi parametri vedere il reference of mysqldump