Вставка Mysql, обновления очень медленные

База данных нашего сервера находится в mysql 5.1, у нас есть 754 таблицы в нашей базе данных. Мы создаем таблицу для каждого проекта. Отсюда и большое количество столов. За последнюю неделю я заметил очень длительную задержку вставки и обновления любой таблицы. Если я создаю новую таблицу и вставляю в нее, для вставки около 300 записей требуется одна минута.

Где наша тестовая база данных на том же сервере имеет 597 таблиц. Такая же вставка в тестовой базе данных выполняется очень быстро.

Движок по умолчанию — MYISAM. Но у нас мало таблиц в INNODB.

Сработало несколько триггеров. После удаления триггеров стало немного быстрее. Но это недостаточно быстро.


person VYSHNAVI    schedule 10.05.2013    source источник


Ответы (3)


ИСПОЛЬЗУЙТЕ DESCRIBE, чтобы узнать свои планы выполнения запросов.

Подробнее см. на http://dev.mysql.com/doc/refman/5.1/en/explain.html для его использования.

person swapnesh    schedule 10.05.2013
comment
@hd1 можно даже отнести к категории слишком широких.. не настоящий вопрос.. лол - person swapnesh; 10.05.2013

Как упоминает @swapnesh, команда DESCRIBE очень полезна для отладки производительности. Вы также можете проверить установку на наличие проблем, используя:

Вы используете это так:

wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl

Конечно, здесь я предполагаю, что вы используете какую-то систему на основе Unix.

Вы можете использовать OPTIMIZE. Согласно мануалу, он делает следующее:

Реорганизует физическое хранилище данных таблицы и связанных данных индекса, чтобы уменьшить пространство для хранения и повысить эффективность ввода-вывода при доступе к таблице. Точные изменения, внесенные в каждую таблицу, зависят от механизма хранения, используемого этой таблицей.

Синтаксис:

OPTIMIZE TABLE tablename
person CodeTower    schedule 10.05.2013

Вставки, как правило, выполняются быстрее, если их делать оптом, а не по одной. Попробуйте вставить 10, 30 или 100 записей в инструкцию.

Если вы используете jdbc, вы можете добиться того же эффекта с помощью пакетной обработки без изменения SQL.

person Joni    schedule 10.05.2013