systemadmin.es > DBA > MySQL: extended insert

MySQL: extended insert

Al realizar dumps con mysqldump podemos hacerlo con los datos insertados mediante un único INSERT o bien un INSERT pode cada fila

# mysqldump --skip-extended-insert dbejemplo | grep ^INSER
INSERT INTO `a` VALUES (1);
INSERT INTO `a` VALUES (2);
INSERT INTO `a` VALUES (3);
# mysqldump --extended-insert dbejemplo | grep ^INSER
INSERT INTO `a` VALUES (1),(2),(3);

Dicho detalle también afecta al tiempo de importación

Vamos a usar una base de datos relativamente pequeña de ejemplo:

# du -hs /var/lib/mysql/dbejemplo/
57M     /var/lib/mysql/dbejemplo/

Creamos los dumps con y sin –extended-insert

# mysqldump --skip-extended-insert dbejemplo > /var/backup/test/skip-extended-insert.sql
# mysqldump --extended-insert dbejemplo > /var/backup/test/extended-insert.sql

En el caso del dump com extended insert vemos que tarda unos 30 segundos a importar:

# time mysql extendedinsert </var/backup/test/extended-insert.sql

real    0m34.850s
user    0m2.024s
sys     0m0.132s

Mientras que el dump com skip-extended-insert tarda unos 4 minutos y medio:

# time mysql skipextendedinsert </var/backup/test/skip-extended-insert.sql

real    4m34.495s
user    0m39.444s
sys     0m31.692s

Evidentemente, la hacer un INSERT por fila también ocupa más, en este caso algo más del doble:

# ls -lh /var/backup/test/
total 169M
-rw-r--r-- 1 root root  51M Jun 14 19:59 extended-insert.sql
-rw-r--r-- 1 root root 119M Jun 14 19:59 skip-extended-insert.sql

La opción –skip-extended-insert nos puede ser útil si necesitamos editar el fichero SQL a mano o si la necesitamos por compatibilidad con versiones antiguas, pero para realizar backups no es la forma más eficiente de hacerlos.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>