Изменение таблиц с MyISAM на InnoDB замедляет работу системы - PullRequest
1 голос
/ 19 января 2009

Привет, я использую Mysql 5.0.x

Я только что изменил множество таблиц с MyISAM на InnoDB

С таблицами MyISAM для установки нашей базы данных понадобилось 1 минута С InnoDB требуется около 15 минут для установки той же базы данных

Почему InnoDB занимает так много времени?

Что я могу сделать, чтобы ускорить процесс?

Установка базы данных выполняет следующие шаги

1) Отбрасывает схему

2) Создать схему

3) Создание таблиц

4) Создание хранимых процедур

5) Вставить данные по умолчанию

6) Вставить данные с помощью хранимой процедуры

EDIT:

Вставка данных по умолчанию занимает большую часть времени

Ответы [ 3 ]

5 голосов
/ 30 апреля 2009

Измените шаг Вставить данные, чтобы начать транзакцию в начале и зафиксировать ее в конце. Вы получите улучшение, я гарантирую это. (Если у вас много данных, вы можете разбить транзакцию до таблицы.)

Если ваше приложение вообще не использует транзакции, вам следует установить для параметра innodb_flush_log_at_trx_commit значение 2. Это вернет вам большую производительность, потому что вы почти наверняка включите auto_commit, и это будет генерировать намного больше транзакций, чем Параметры InnoDB по умолчанию настроены для. Этот параметр останавливает ненужную очистку дисковых буферов при каждом коммите.

3 голосов
/ 19 января 2009

15 минут не кажутся мне чрезмерными. В конце концов, это единовременная стоимость.

Я не уверен, но я бы предположил, что часть объяснения заключается в том, что ссылочная целостность не бесплатна. InnoDB должен сделать больше работы, чтобы гарантировать это, поэтому, конечно, это займет больше времени.

Возможно, ваш скрипт нужно изменить, чтобы добавить ограничения после создания таблиц.

0 голосов
/ 19 января 2009

Как сказал duffymo, отключите ограничения (индексы и первичные / первичные ключи) перед вставкой данных.

Возможно, вам следует восстановить некоторые индексы до того, как данные будут вставлены с помощью хранимой процедуры, если в ней много select операторов

...