Восстановление таблиц InnoDB: очень, очень медленно? - PullRequest
2 голосов
/ 18 августа 2011

Раньше я имел дело с таблицами Myisam, но для внешних подключений я перешел на таблицы Innodb (преобразовал и добавил внешние ключи).Я часто загружаю базу данных с сервера и заполняю ею localhost.Когда это были столы myisam, раньше это было очень быстро.Но теперь это требует более 30 минут ... Я знаю, что он должен выполнять проверки перед вставкой записей, но я отключил проверку внешнего ключа.Некоторые строки этого:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS t1;
CREATE TABLE `t1` (  `ID` int(10) unsigned NOT NULL auto_increment,  `NAME` varchar(255) NOT NULL default '',  PRIMARY KEY  (`ID`),  UNIQUE KEY `Index_2` (`NAME`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
TRUNCATE TABLE t1;

удалить / создать / усечь все таблицы.Тогда INSERT, INSERT ... как сделать это быстрее?

1 Ответ

2 голосов
/ 18 августа 2011

Если вы используете mysqldump, используйте --extended-insert.Это объединит вставки нескольких строк в один оператор.

Также попробуйте параметр --disable-keys.Это не только отключит проверку внешнего ключа, но также отключит обновление индексов, пока все строки не будут вставлены.Как правило, гораздо быстрее обновить индекс сразу.

Если вы не используете mysqldump, вы можете выполнить ALTER TABLE table_name DISABLE KEYS; до дампа и ALTER TABLE table_name ENABLE KEYS; после дампа для каждой таблицы.

Однако вы, скорее всего, обнаружите, что инструмент резервного копирования для ядра СУБД будет работать быстрее.Попробуйте XtraBackup .

...