Tengo un seguimiento de mi pregunta anterior sobre la velocidad de importación con Inno-Tables (¡sorpresa!).
Escenario
Intento importar un volcado de base de datos grande * en mi máquina de desarrollo local en un tiempo razonable. Tenemos muchos KEY
correos adjuntos a las tablas que han resultado ser un cuello de botella pero que siguen siendo importantes para nuestro sistema en vivo.
Mi enfoque después de hacer la pregunta anterior fue eliminar las KEY ...
declaraciones de volcado, importar y volver a agregar claves.
Sin embargo, a menudo me encuentro editando un volcado actual para importarlo localmente y me topé con estos divertidos "comentarios" (The disable/enable keys
-lines)
--
-- Dumping data for table `monster`
--
LOCK TABLES `monster` WRITE;
/*!40000 ALTER TABLE `monster` DISABLE KEYS */;
INSERT … INSERT … INSERT
/*!40000 ALTER TABLE `monster` ENABLE KEYS */;
UNLOCK TABLES;
Pero, de hecho, estos "comentarios" son declaraciones condicionales de MySql
Eso fue una novedad para mí, pero bueno, dado el formulario de salida, mysql --version
todo me parece bien:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
Lo que supongo
La mesa está bloqueada (bien, solo soy yo en el dev mashine). Luego, las claves definidas en el esquema de la tabla se deshabilitan, se importan los datos y se habilitan las claves.
Por lo tanto, durante la fase de "inserción de datos", no se debe perder el tiempo en las claves, sino examinarlas después de insertar todos los datos.
KEY 'foo' (foo)'
Pensaría que este es el mismo comportamiento que si elimino todas las líneas del volcado, importo el volcado y ejecuto un script ADD KEY 'foo' ...
después.
Lo que observo
Es mucho más rápido eliminar manualmente las claves, importar y volver a agregar claves y luego confiar en las DISABLE KEYS
declaraciones condicionales creadasmysqldump
Edición manual de dump + mysql import + add keys = 15 + 8 + 8 ≈ 30min
Plain mysql import: abandonado, (solo me pagan por 8 horas / día> :))
No puedo evitar pensar que me falta algo muy fundamental aquí (o la base de datos me está controlando).
mysqldump --innodb-optimize-keys
de Percona percona.com/doc/percona-server/5.5/management/… Largo plazo: deje de usar mysqldump y use mydumper o xtrabackup.