Этот вопрос, вероятно, можно задать и в StackOverflow, но сначала я попробую здесь ...
Производительность операторов INSERT и UPDATE в нашей базе данных, похоже, снижает производительность и приводит к снижению производительности нашего веб-приложения.
Таблицы InnoDB и приложение использует транзакции. Есть ли какие-то легкие настройки, которые я могу сделать, чтобы ускорить процесс?
Я думаю, что мы можем видеть некоторые проблемы с блокировкой, как я могу узнать?
mysql
performance
innodb
mmattax
источник
источник
Ответы:
Проверьте, правильно ли настроено и настроено ваше оборудование и ОС:
Проверьте, правильно ли настроен ваш экземпляр MySQL / InnoDB:
Load data infile
Команда намного быстрее для серии вставок.select count(*) from table;
гораздо медленнее для innodb, чем для myisam.Несколько полезных ссылок:
источник
С конфигурацией innoDB по умолчанию вы будете ограничены скоростью, с которой вы можете записывать и сбрасывать транзакции на диск. Если вы можете справиться с потерей небольшого количества ACID, поэкспериментируйте с innodb_flush_log_at_trx_commit. Установите 0, чтобы записывать и сбрасывать журнал на диск примерно каждую секунду. Установите 1 (по умолчанию), чтобы записывать и очищать каждый коммит. Установите значение 2 для записи в файл журнала после каждой фиксации, но сбрасывайте только один раз в секунду.
Если вы можете справиться с потерей 1-й транзакции, это может стать отличным способом значительно повысить производительность записи.
Также обратите внимание на то, что делают ваши диски. RAID 10> RAID 5 для записи за счет дополнительного диска.
источник
Проблемы блокировки будут рассмотрены состояниями соединения в
show full processlist;
Прочитайте
my.cnf
и MySQL документацию. Параметры конфигурации очень хорошо задокументированы.Вообще говоря, вы хотите, чтобы как можно больше обрабатывалось в памяти. Для оптимизации запросов это означает, что нужно избегать временных таблиц. Правильное применение индексов.
Настройка будет зависеть от предпочитаемого вами механизма базы данных и архитектуры приложения. Существуют значительные ресурсы, которые уже существуют для поиска в Интернете.
источник
Включение мониторов Innodb может помочь определить причины блокировок и тупиков:
ПОКАЗАТЬ ДВИГАТЕЛЬ INNODB STATUS и мониторы InnoDB
источник
InnoDB - довольно хороший движок. Тем не менее, он очень полагается на «настроение». Во-первых, если ваши вставки не в порядке увеличения первичных ключей, innoDB может занять немного больше времени, чем MyISAM. Это можно легко преодолеть, установив более высокое значение innodb_buffer_pool_size. Я предлагаю установить его на 60-70% от общего объема оперативной памяти. Сейчас я работаю на 4 таких серверах, вставляя около 3,5 миллионов строк в минуту. У них уже есть около 3 терабайт. InnoDB это должно было быть, из-за очень параллельных вставок. Есть и другие способы ускорить вставки. И я сравнил некоторые из них.
источник
Как решить проблемы с производительностью вставки и обновления в MySQL в веб-приложении, просто отключив автоматическую фиксацию и зафиксировав изменения один раз в Java. Как предлагается в документации MySQL.
MySQL Docs
источник