J'ai une suite à ma question précédente concernant la vitesse d'importation avec Inno-Tables (surprise!).
Scénario
J'essaie d'importer un gros vidage de base de données * sur ma machine de développement locale dans un délai raisonnable. Nous avons beaucoup de KEY
s attachés aux tables qui se sont avérés être un goulot d'étranglement mais qui sont toujours importants pour notre système live.
Mon approche après avoir posé la question ci-dessus était de supprimer les KEY ...
instructions de vidage, d'importer et de rajouter des clés.
Cependant, je me retrouve souvent à modifier un vidage en cours pour l'importer localement et je suis tombé sur ces drôles de "commentaires" (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;
Mais en fait, ces "commentaires" sont des déclarations MySql conditionnelles
C'était une nouvelle pour moi, mais ok, étant donné le formulaire de sortie, mysql --version
tout me va bien:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
Ce que je suppose
La table est verrouillée (très bien, c'est juste moi sur le dev mashine). Ensuite, les clés telles que définies dans le schéma de table sont désactivées, les données sont importées, les clés sont activées.
Ainsi, pendant la phase d'insertion de données, il ne devrait pas y avoir de perte de temps sur les clés, mais plutôt examiné après l'insertion de toutes les données.
Je penserais que c'est le même comportement que si je supprimais toutes les KEY 'foo' (foo)'
lignes du vidage, importais le vidage et exécutais un script avec ADD KEY 'foo' ...
ensuite.
Ce que j'observe
Il est beaucoup plus rapide de supprimer manuellement les clés, d'importer et de rajouter des clés, puis de s'appuyer sur des DISABLE KEYS
instructions conditionnelles pour créer monmysqldump
Édition manuelle du vidage + importation mysql + ajout de clés = 15 + 8 + 8 ≈ 30min
Importation simple mysql: abandonné, (je suis juste payé pour 8 heures / jour> :))
Je ne peux pas m'empêcher de penser que je manque quelque chose de très fondamental ici (ou la base de données me traîne).
mysqldump --innodb-optimize-keys
depuis Percona percona.com/doc/percona-server/5.5/management/… Long terme: arrêtez d'utiliser mysqldump et utilisez mydumper ou xtrabackup.