Ho seguito la mia domanda precedente sulla velocità di importazione con Inno-Tables (sorpresa!).
Scenario
Provo a importare alcuni grandi * dump di database sulla mia macchina di sviluppo locale in tempi ragionevoli. Abbiamo molti KEY
s collegati ai tavoli che si sono rivelati un collo di bottiglia ma sono ancora importanti per il nostro sistema live.
Il mio approccio dopo aver posto la domanda sopra è stato quello di eliminare le KEY ...
istruzioni dal dump, importare e aggiungere nuovamente le chiavi.
Tuttavia mi trovo spesso a modificare un dump corrente per importarlo localmente e mi sono imbattuto in questi divertenti "commenti" (Le disable/enable keys
linee)
--
-- 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;
Ma in realtà questi "commenti" sono dichiarazioni MySql condizionate
Questa è stata una novità per me, ma va bene, dato il modulo di output, mysql --version
tutto mi sembra perfetto:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
Cosa presumo
Il tavolo è bloccato (va bene, sono solo io sul mashine di sviluppo). Quindi le chiavi come definite nello schema della tabella sono disabilitate, i dati vengono importati, le chiavi sono abilitate.
Quindi durante la fase di "inserimento dei dati" non dovrebbe esserci tempo perso sulle chiavi ma piuttosto esaminato dopo l'inserimento di tutti i dati.
Penserei che questo sia lo stesso comportamento che se KEY 'foo' (foo)'
eliminassi tutte le righe dal dump, importassi il dump ed eseguissi uno script in ADD KEY 'foo' ...
seguito.
Quello che osservo
È molto più veloce eliminare manualmente le chiavi, importare e aggiungere nuovamente le chiavi e fare affidamento su DISABLE KEYS
istruzioni condizionali create da memysqldump
Modifica manuale di dump + importazione mysql + aggiunta di chiavi = 15 + 8 + 8 ≈ 30min
Importazione mysql semplice: rinuncia, (mi pagano solo 8 ore al giorno> :))
Non posso fare a meno di pensare che mi manchi qualcosa di fondamentale qui (o il database mi sta trollando).
mysqldump --innodb-optimize-keys
da Percona percona.com/doc/percona-server/5.5/management/… A lungo termine: interrompere l'utilizzo di mysqldump e utilizzare mydumper o xtrabackup.