У мене є попереднє запитання щодо швидкості імпорту за допомогою Inno-Tables (сюрприз!).
Сценарій
Я намагаюся імпортувати якийсь великий дамп із бази даних * на мою локальну машину розробників у розумні строки. У нас багато KEY
прикріплених до таблиць, які виявилися вузьким місцем, але все ще важливі для нашої живої системи.
Мій підхід після того, як ставити питання вище, полягав у видаленні KEY ...
висловлювань із дамп, імпорту та повторного додавання ключів.
Однак я часто можу редагувати поточний дамп, щоб імпортувати його локально, і я натрапив на ці смішні "коментарі" (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;
Але насправді ці "коментарі" є умовними MySql-Заявами
Це було новиною для мене, але гаразд, враховуючи форму випуску, для мене mysql --version
все виглядає нормально:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
Що я припускаю
Таблиця заблокована (прекрасно, це я лише на машині dev). Потім ключі, визначені в схемі таблиці, відключаються, дані імпортуються, ключі вмикаються.
Тому під час "вставки даних" -фаза не повинна витрачатися час на клавіші, а перевірятись після того, як всі дані будуть вставлені.
Я б думав, що це та ж поведінка, як якщо я KEY 'foo' (foo)'
видаляю всі- рядки з дампа, імпортую дамп і запускаю сценарій ADD KEY 'foo' ...
після цього.
Що я зауважую
Це набагато швидше вручну видалити ключі, імпортувати та повторно додавати ключі, а потім спираючись на умовні DISABLE KEYS
заяви, створені моїмиmysqldump
Ручне редагування дампа + імпорту mysql + додавання клавіш = 15 + 8 + 8 ≈ 30 хв.
Звичайний імпорт mysql: відмовлено, (мені щойно платять за 8 годин / день> :))
Я не можу не допомогти, але думаю, що тут я пропускаю щось дуже фундаментальне (або база даних мене тролює).
mysqldump --innodb-optimize-keys
від Percona percona.com/doc/percona-server/5.5/management/… Довгостроковий: припиніть використання mysqldump та використовуйте mydumper або xtrabackup.