SQLMon: мониторинг запросов MySQL

Наверное, каждый разработчик знает, что во многих случаях плохая связана с ошибками при проектировании базы данных либо неоптимальными запросами к (например, в таблице нет индекса, который мог бы использоваться для выполнения запроса, либо запрос использует ORDER BY/GROUP BY, без которых можно обойтись).

может вывести только список всех выполненных запросов — разработчику придётся запускать каждый подозрительный запрос вручную и анализировать результат. Это очень муторно и непродуктивно. пытается помочь разработчикам, анализируя все запросы перед их выполнением, сообщая обо всём, что требует внимания.

Каждый запрос, который передаётся WordPress, анализируется (используя EXPLAIN); результаты показываются в подвале темы или панели администрирования. Лог запросов виден только администраторам, что позволяет использовать даже на живых сайтах.

Одна из особенностей SQLMon — возможность выполнения EXPLAIN не только на запросах SELECT, но и UPDATE/DELETE и INSERT/REPLACE INTOAS или CREATE TABLEAS.

Перед использованием плагина рекомендую к прочтению статью Optimizing Queries with EXPLAIN.

Активация плагина: для успешной активации каталог wp-content должен быть доступен на запись — в него помещается файл db.php, который занимается отловом и анализом запросов.

Деактивация/удаление: аналогично, чтобы плагин смог удалить файл db.php, каталог wp-content должен быть доступен на запись. Тем не менее, в плагин добавлены средства контроля, позволяющие сохранить работоспособность блога, если плагин был удалён, а wp-content/db.php — нет.

Внимание:

  • плагин не будет работать с PHP 4;
  • плагин конфликтует со всеми плагинами, устанавливающими свой собственный db.php (W3 Total Cache, DB Cache, DB Cache Reloaded).

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

Домашняя страница SQLMon на wordpress.org.

Автор: ;

RSS Комментарии к статье «SQLMon: мониторинг запросов MySQL» (15)  »

  1. Anonymous Coward

    Does this plugin actually make mysql recommendations and fix them? I have a mysql bottleneck issue and my server is quite slow right now. thanks

    • To some extent. It does not give you recommendations but it shows what can cause problems.

      For example, please take a look at the attached file: you will see these comments in red: «Using temporary; Using filesort». Temporary tables and filesort are known to be performance killers (especially on large datasets). If you can get rid of them, you will get a faster query. The next (by importance) is the orange label — »range». It means that MySQL has to do several lookups in the index to get all necessary rows. range is OK unless you have a large «x IN (List)» condition or when more than 30% of the rows match the range condition (if you have a large dataset).

      To summarize: the plugin just simplifies the analysis of the queries but it is the user who has to make the final decision.

      PS — if you need help with the query optimization, feel free to ask :-)

      query.png

  2. [...] SQLMon: мониторинг запросов MySQL [...]

  3. оптимизация NextGen Gallery « Авторская галерея Виталика Седова

    [...] плагина MySQL Monitor [...]

    http://photo.aquadb.com/wordpress/optimizaciya-nextgen-gallery.html

  4. Hi – we’ve installed this plugin, but I can’t figure out where the reports appear. Where can I see the reports in the admin?

    Thanks!

    • Hi Miriam,

      By default the plugin displays the stats for the users which have «administrator» capability (this can be changed by installing enable_sqlmon filter). Stats are displayed during wp_footer and admin_footer events.

      And please make sure that the plugin was able to create wp-content/db.php after activation; if it hasn’t you will have to copy wp-content/plugins/sqlmon/db.php to wp-content/db.php

      Hope that helps.

  5. Konstantin

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

  6. Andrey

    Пытался поставить этот плагин, сначала он ругался на
    require_once(WP_PLUGIN_DIR . ‘/sqlmon/lib/class.Logger.php’);
    require_once(WP_PLUGIN_DIR . ‘/sqlmon/lib/class.LogEntry.php’);
    не мог найти корректный путь, поменял руками на

    require_once(‘/usr/share/wordpress/wp-content/plugins/sqlmon/lib/class.Logger.php’);
    require_once(‘/usr/share/wordpress/wp-content/plugins/sqlmon/lib/class.LogEntry.php’);

    После этого плагин отработал без ошибок, но файл wp-content/db.php не создал, хотя на папку права стоят 777

      1. Какая версия WordPress?
      2. Определены ли константы WP_PLUGIN_DIR, WP_CONTENT_DIR, если да, то верны ли их значения?
      3. Если в файле sqlmon.php в методе SqlMonitor::activate() в строке @copy(dirname(__FILE__) . '/db.php', WP_CONTENT_DIR . '/db.php'); убрать @, какая ошибка появляется при активации плагина?
      • Andrey

        Проблема была в версии wordpress’a(2.5.1), после обновления на последнюю, плагин заработал корректно.

        Кстати
        wp_enqueue_style(‘sqlmon-css’, plugins_url(‘sqlmon/sqldebug.css’), array(), », ‘all’);
        до обновления на стиль ругался, пришлось закомментировать эту строку.

        Извините за беспокойство.

  7. 0D0A

    Понимаю, что вопрос не совсем по теме, но уж очень беспокоит то, что обращение к странице генерит 4 запроса:

    3 SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name = ‘legal’ AND (post_type = ‘page’ OR post_type = ‘attachment’)

    4 SELECT * FROM wp_posts WHERE ID = 545 LIMIT 1

    5 SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND (wp_posts.ID = ’545′) AND wp_posts.post_type = ‘page’ ORDER BY wp_posts.post_date DESC0

    6 SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (545)

    Это стандартное поведение вордпреса и у всех так или у меня что-то сломано и можно уменьшить количество запросов?

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «SQLMon: мониторинг запросов MySQL»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा