Есть ли хороший инструмент для MySQL, который поможет мне оптимизировать мои запросы и настройки индекса? - PullRequest
7 голосов
/ 24 сентября 2008

Я использую MySQL на довольно сложном веб-сайте (управляемом PHP).

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

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

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

Спасибо.

Ответы [ 5 ]

18 голосов
/ 26 сентября 2008

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

Во-вторых, вот некоторая информация о EXPLAIN (на которую ссылается книга High Performance MySQL от O'Reilly):

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

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

  • идентификатор таблицы (в запросе)
  • Роль таблицы в большем выборе (если применимо, может просто сказать ПРОСТО, если это только одна таблица)
  • название стола (дух)
  • тип соединения (если применимо, по умолчанию const )
  • список индексов в таблице (или NULL, если их нет), возможных_кнопок
  • имя индекса, который MySQL решил использовать, key
  • размер значения ключа (в байтах)
  • ref показывает столбцы или значения, используемые для сопоставления с ключом
  • rows - это количество строк, которое MySQL считает необходимым проверить, чтобы удовлетворить запрос. Это должно быть как можно ближе к расчетному минимуму!
  • ... тогда любая дополнительная информация, которую MySQL желает передать

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

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

4 голосов
/ 24 сентября 2008

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

3 голосов
/ 24 сентября 2008

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

1 голос
/ 24 сентября 2008

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

0 голосов
/ 10 марта 2009

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

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...