2010-06-02 10 views
6

Mi importación de SQL a través de la consola MySQL es bastante lenta y, como nuestro archivo SQL aumenta todos los días, me gustaría saber si hay alguna alternativa sobre cómo importar una Archivo SQL más rápido.Consola MySQL lenta en la importación de archivos SQL enormes

Cambiar a Oracle u otros sistemas no es una opción, la configuración debe permanecer igual.

Actualmente el archivo SQL es: 1,5 GB. Estoy en WAMP con Apache 2.2.14, PHP 5.2.11 y MySQL 5.1.41.

Tal vez el problema es que aquí, la importación se realiza mediante un simple:

mysql -u username -p dbname < sqlfilename.sql 

¿Alguna sugerencia?

+0

¿Está utilizando mysqlimport o cargar datos INFILE ? –

+0

Esto es algo que debe colocarse en el Sql si estoy en lo correcto, eso no es posible, ya que no puede cambiar un archivo Sql que sea de 1.4 Gb en cualquier editor, y proviene de una fuente externa. – Kennethvr

+0

Puede ayudar a alguien: primero reinicie su computadora, luego desactive sus antivirus/firewalls/rastreadores de ancho de banda + cualquier otro programa que no necesite ejecutar. Pero deshabilitando esas dos cosas incrementé la velocidad como 6x. – Andrew

Respuesta

5

Tener los índices habilitados durante la importación ralentizará su servidor a un rastreo. ALTER TABLE nombre de tabla DISABLE KEYS; y usar ..ENABLE KEYS antes y después de la importación, mejorará la velocidad de importación, pero tomará un tiempo para volver a crear los índices, por lo que podría no ser una gran ganancia de velocidad después de todo.

Además, quizás el uso de tablas myisam (a diferencia de innodb con opciones de integridad referencial) por lo general ofrece un mejor rendimiento, ya que no se requiere una sobrecarga de integridad referencial.

Personalmente, no uso instrucciones de importación de la consola de mysql, pero importo archivos de sql usando mysql -uUSER -pPASS DBNAME < file.sql, y me funciona bien.

Espero que ayude.

+0

así es como estoy rodando en este momento ... y eso no es rápido en datos enormes ... – Kennethvr

+1

Considere usar el comando mysqlimport. Tomará un archivo plano que contenga datos en algún formato separado por tabuladores o algo diferente, e lo importará directamente en la tabla, más rápido que ejecutar consultas SQL. –

+2

Consulte http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html para obtener información sobre el comando mysqlimport, si no está familiarizado con él. –

0

No estoy seguro si esto solucionará su problema, porque no estoy seguro de dónde está el cuello de botella ... Sin embargo, he quedado realmente impresionado con la herramienta gratuita Toad for MySQL como consola de administración de MySQL de reemplazo. Tiene excelentes herramientas de importación y generalmente es millas mejor que la consola de administración estándar de MySQL.

+0

¿alguien más tiene experiencia con Toad en este tema con enormes archivos de datos? – Kennethvr

+0

El enlace del sapo está roto ... – DrCord

+0

@DrCord - actualizado. – UpTheCreek

1

conmutación de confirmación automática Desactivado es el primero de una serie de recomendaciones dadas en Bulk Data Loading for InnoDB Tables para acelerar las operaciones de restauración para MySQL.

En lugar de desactivar el autocommit manualmente en el momento de la restauración, ya puede volcar sus datos de MySQL de manera que incluyan todas las declaraciones necesarias directamente en su archivo SQL.

El parámetro de línea de comando para mysqldump es --no-autocommit. También puede considerar agregar --opt que establece una combinación de otros parámetros para acelerar las operaciones de restauración.

Aquí se muestra un ejemplo de una línea de comando mysqldump completo como lo uso, que contiene --no-autocommit y --opt:

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

Para más detalles sobre estos parámetros veo el reference of mysqldump

Cuestiones relacionadas