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: