Kontynuuję moje poprzednie pytanie dotyczące prędkości importu w Inno-Tables (niespodzianka!).
Scenariusz
Próbuję zaimportować duży * zrzut bazy danych na mój lokalny komputer programistyczny w rozsądnym czasie. Mamy wiele KEY
załączonych tabel, które okazały się wąskim gardłem, ale nadal są ważne dla naszego systemu na żywo.
Moje podejście po zadaniu powyższego pytania polegało na usunięciu KEY ...
instrukcji ze zrzutów, importowaniu i ponownym dodawaniu kluczy.
Jednak często zdarza mi się edytować bieżący zrzut, aby zaimportować go lokalnie, i natknąłem się na te śmieszne „komentarze” (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;
Ale w rzeczywistości te „komentarze” są warunkowymi oświadczeniami MySql
To była dla mnie nowość, ale ok, biorąc pod uwagę wynik, mysql --version
że wszystko wygląda dla mnie dobrze:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
Co zakładam
Stół jest zamknięty (w porządku, to tylko ja na urządzeniu deweloperskim). Następnie klucze zdefiniowane w schemacie tabeli są wyłączane, dane są importowane, klucze są włączane.
Dlatego podczas fazy „wstawiania danych” klucze nie powinny tracić czasu, a raczej sprawdzane po wstawieniu wszystkich danych.
Pomyślałbym, że jest to takie samo zachowanie, jak gdybym usunął wszystkie KEY 'foo' (foo)'
linie z zrzutu, zaimportowałem zrzut i uruchomiłem ADD KEY 'foo' ...
później skrypt .
Co obserwuję
Jest znacznie szybsze ręczne usuwanie kluczy, importowanie i ponowne dodawanie kluczy, a następnie poleganie na DISABLE KEYS
instrukcjach warunkowych utworzonych przeze mniemysqldump
Ręczna edycja zrzutu + importu MySQL + dodawanie kluczy = 15 + 8 + 8 ≈ 30min
Zwykły import MySQL: zrezygnowałem, (dostaję zapłatę za 8 godzin dziennie> :))
Nie mogę przestać myśleć, że brakuje mi czegoś bardzo podstawowego (lub trolluje mnie baza danych).
mysqldump --innodb-optimize-keys
z Percona percona.com/doc/percona-server/5.5/management/... długoterminowa zaprzestać używania mysqldump i używać mydumper lub xtrabackup.