Fullstack разработчик (PHP/Javascript)
23,2
рейтинг
19 декабря 2015 в 22:11

Разработка → Сервис от компании Percona для создания оптимальной конфигурации MySQL серверов и анализа SQL-запросов

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



Анализ запросов в данном сервисе — не является заменой команде EXPLAIN, которая ориентирована на анализ производительности запроса, а является скорее дополнением, которое анализирует запрос с точки зрения его синтаксиса.



Информация о компании Percona
Percona is an open source software company specializing in MySQL Support, Consulting, Managed Services, and Training. The company was founded in 2006 by Peter Zaitsev and Vadim Tkachenko[1][2] and is headquartered in Durham, North Carolina. The company launched a MySQL Backup Service in June 2014 as part of its Managed Services.[3] The company contributes to the MySQL community through its blog site, the MySQL Performance blog.[4] The company also hosts annual MySQL user conferences[5] named «Percona Live» in Silicon Valley and London. The company's founders have also published the O'Reilly book «High Performance MySQL».[6]


После регистрации на сайте по адресу https://tools.percona.com, Вам становятся доступными два сервиса:
«Configuration wizard» и «Query adviser». Рассмотрим их подробнее

Configuration wizard — позволяет на основе пошагового опроса (всего 7 шагов) получить готовую конфигурацию my.cnf в которой учтены именно ваши условия работы.

Пример экрана с запросом:



Так выглядит экран с итоговой конфигурацией (на скриншоте часть my.cnf файла):



Query adviser — позволяет указав SQL запрос получить рекомендации по его оптимизации с точки зрения синтаксиса (еще раз подчеркну, что сервис не анализирует план выполнения запроса ввиду отсутствия данных о конфигурации сервера и наличия индексов).

Пример запроса:

SELECT 
   p.shopId, 
   p.typeId,  
   MIN(p.price) AS price
FROM 
  modelPrice p, 
  modelItem i 
WHERE 
  p.modelItemId = i.id AND 
  i.modelId = '5250' AND 
  p.price > 0
GROUP BY 
  p.shopId, 
  p.typeId


Рекомендации сервиса:



и более развернуто



Все конфигурации и анализы SQL-запросов сохраняются в dashboard для последующего анализа и использования.

В заключение хотелось бы отметить, что несмотря на наличие большого количества подробных руководств и статей по настройке MySQL, данные сервисы могут полезны как для начинающих, так и опытных разработчиков, поскольку систематизируют в компактной форме рекомендации данные в документации.
Левша Дмитрий @DVLev
карма
39,0
рейтинг 23,2
Fullstack разработчик (PHP/Javascript)
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (8)

  • +2
    Немного не понял про первый совет. Не вижу в теле запроса полей, которые не учавствовать бы в группировке или же не были аггрегирующими функциями. Или может быть тестировался немного другой запрос, нежели приведённый в статье.
    • +3
      Кстати когда я пришёл в мир MySQL из Oracle, я не мог поверить что в SELECT части можно указывать поля, которые не участвуют в группировке или не используются в аггрегирующих функциях. Но ничего, со временем втянулся.
  • +3
    удаление «AS» повышает риск появления ошибки (например в случае пропущенных запятых). Лучше лишний раз написать «AS», чем потом выискивать ошибку. Это я к тому, что в правиле ALI.001 я бы сделал инверсию — рекомендовать написать «AS», чем рекомендовать его убрать.
    • +3
      Там как раз рекомендуется всегда писать с AS.
      • +1
        да, правда ваша — не так прочитал рекомендацию.
  • 0
    Я конечно долго возился с этим запросом, получился он «монстрообразным» (по другому сделать было не реально), но…
    You're awesome! We couldn't find any problems with this query.
    Обратите внимание на сам запрос

    http://easycaptures.com/fs/uploaded/1053/4342879889.png

    Даже как то странно :)
    Я его считал что он «не очень»
    • 0
      Хотя соглашусь наверно с сервисом — лучше его составить для этой задачи было наверно не реально
      Выполняется он кстати очень быстро (несмотря на свой «монстрообразный вид») и EXPLAIN показывает везде Using where; Using index и т.п.
    • 0
      «Монстрообразность» этого запроса повышается, ввиду присутствия подчеркиваний орфографии, отсутствия подсветки синтаксиса и невозможностью копирования :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.