Изменение таблиц с MyISAM на InnoDB замедляет работу системы

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

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

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

Почему InnoDB так долго?

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

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

1) Удаляет схему

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

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

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

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

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

Обновлено:

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

Какой шаг занимает большую часть времени?

Zoredache 19.01.2009 14:53
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
4 277
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

15 минут мне не кажутся лишними. В конце концов, это единовременная плата.

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

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

Возможно, также рассмотрите возможность использования одной транзакции вместо автоматической фиксации.

falstro 19.01.2009 15:33

@roe - спасибо - единая транзакция ускоряет работу

Charles Faiga 19.01.2009 18:15

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

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

Ответ принят как подходящий

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

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

Я согласен с вами по "innodb_flush_log_at_trx_commit" ,. для случаев, когда InnoDB используется в качестве замены MyISAM, тогда это лучший вариант.

ovais.tariq 03.06.2011 16:56

И еще. Вставьте данные в таблицу innodb в порядке первичного ключа.

ovais.tariq 03.06.2011 16:56

Другие вопросы по теме