MySQL замедляется после INSERT - PullRequest
1 голос
/ 22 января 2012

У меня проблемы с производительностью моего веб-приложения.Выяснил, что узким местом является дБ.Приложение работает на сервере LAMP (VPS) с 4 ЦП и 2 ГБ ОЗУ.
После вставки новой записи в БД (таблица с около 100 000 записей) некоторые запросы значительно замедляются (иногда по несколько минут).Я думал, что проблема заключается в переиндексации, но практически нет активности на VPS после вставки.Осталось много памяти, не нужно менять местами.Процессор простаивает.

По правде говоря, выбор довольно сложен:

SELECT COUNT(A.id), B.title FROM B JOIN A .... WHERE ..lot of stuff..

И у A, и у B около 100К записей.A имеет много столбцов, B - только несколько, но это древовидная структура, представленная вложенным множеством.B не очень часто меняется, но A меняется.ГДЕ условия в основном охватываются индексами.Обычно в наборе результатов содержится около 10-30 строк.

Могу ли я выполнить какие-либо оптимизации?

Ответы [ 2 ]

1 голос
/ 22 января 2012

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

вам также нужно посмотреть на интенсивно используемые столбцы индексации.

0 голосов
/ 22 января 2012

Прежде всего: НЕ доверяйте никаким измерениям ЦП / ОЗУ и т. Д. Внутри VPS - они могут быть ошибочными, поскольку не учитывают происходящее на машине (в других VPS)!

Что касается производительности:

Проверьте планы запросов для всех ваших операторов SQL ... используйте профилировщик в самом приложении и посмотрите, где узкие места ...

Еще один момент - проверить конфигурацию вашей базы данных MySQL ... происходит ли репликация (может также вызвать медленный запуск)? Достаточно ли памяти в БД? БД находится на другой машине / VPS или на том же VPS?

...