2008-09-24 2 views
8

Я использую MySQL на довольно сложном веб-сайте (с помощью PHP).Есть ли хороший инструмент для MySQL, который поможет мне оптимизировать мои запросы и параметры индекса?

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

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

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

спасибо.

ответ

18

ОК, перед тем как ответить, подпишитесь на MySQL Performance Blog, я многому научился (и я думал, что я уже много знал о MySQL). Кроме того, у него есть страница инструментов bitchin here.

Второй прочь, вот некоторая информация о EXPLAIN (ссылка от High Performance MySQL книги от O'Reilly):

При запуске EXPLAIN на запросе, он говорит вам все, MySQL знает о том, что запрос в формы отчетов для каждой таблицы, участвующих в запросе.

Каждый из этих отчетов будет сказать ...

  • идентификатор таблицы (в запросе)
  • роль стола в большом выборе (если это применимо, может просто сказать, SIMPLE, если это только одна таблица)
  • имя таблицы (Дух)
  • типа присоединиться (если это применимо, по умолчанию сопзЬ)
  • список индексов таблицы (или если NULL нет), possible_keys
  • имя индекса, который MySQL решил использовать, ключ
  • размер значение ключа (в байтах)
  • исх показаны COLS или значения, используемые для соответствия против ключа
  • rows - это количество строк, которое MySQL считает необходимым для его проверки, чтобы удовлетворить запрос. Это должно быть как можно ближе к вашему расчетному минимуму!
  • ... то любая дополнительная информация MySQL хотела бы передать

Книга полностью удивительная в предоставлении информации, как это, так что если вы еще не сделали, получить босс, чтобы подписать на покупке.

В противном случае, я надеюсь, что некоторые более знающие так что пользователь может помочь :)

3

Есть, вероятно, анализаторы запросов, но для простого первого разреза на нем используйте командную строку mysql и введите «объясните select» из foo, где bar = 'abc' ". Убедитесь, что ваши наиболее распространенные запросы используют индексы, стараются избегать последовательного сканирования или сортировки больших таблиц.

+0

Я попытался объяснить, в прошлом, но никогда не понимал выход. Я обновил вопрос, чтобы отразить это. – 2008-09-24 14:56:33

1

Вы должны изучить Maatkit, который представляет собой набор инструментов с открытым исходным кодом для выполнения всех видов задач MySQL. Без дополнительной информации о том, что вы пытаетесь настроить, трудно сказать, какие инструменты вы будете использовать и как, но документация отличная и охватывает множество приложений.

4

Как простейшая вещь, включите Slow Query Log и посмотрите, какие запросы медленны, затем попробуйте проанализировать их, как было предложено.

0

Инструмент я использую для остальной части моей SqL тонкой настройки (SQLyog) имеет новую версию, которая включает в себя профайлер, который является удивительным! (Я не работаю на них - я просто использовать их продукт)

enter image description here

http://www.webyog.com/en/screenshots_sqlyog.php

Смежные вопросы