Сервис от компании 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, данные сервисы могут полезны как для начинающих, так и опытных разработчиков, поскольку систематизируют в компактной форме рекомендации данные в документации.
    Метки:
    • +12
    • 12,9k
    • 8
    Поделиться публикацией
    Комментарии 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
              «Монстрообразность» этого запроса повышается, ввиду присутствия подчеркиваний орфографии, отсутствия подсветки синтаксиса и невозможностью копирования :)

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