SQLMon для Kohana 3

Мониторинг SQL-запросов в Kohana 3

Продолжая славную традицию реализации под различные CMS/фреймворки, написал одному заказчику модуль для 3.

SQLMon для интегрируется в иерархию классов Database (встраивается между классами Database_ и Kohana_Database_MySQL) и реализует обёртку над методом Kohana_Database_MySQL::query(), измеряя время выполнения запроса, объём потребляемой памяти, записывая код ошибки запроса, трассу вызовов и EXPLAIN запроса (причём не только для SELECT, но и UPDATE/DELETE и INSERT/REPLACE INTOAS или CREATE  TABLEAS) — всё то же самое, что и SQLMon для WordPress.

Данный модуль будет полезен разработчикам для анализа производительности запросов MySQL и поиска решений для их оптимизации. Перед использованием модуля рекомендуется прочитать статью «Optimizing Queries with EXPLAIN».

Использование модуля. Модуль должен быть распакован в каталог modules проекта (после распаковки появится каталог sqlmon). Затем модуль должен быть активирован в файле application/bootstrap.php. Очень важно, чтобы модуль подключался перед модулем database — это связано с особенностями поиска классов в Kohana 3.

Например:

[-]
View Code PHP
Kohana::modules(array(
    'sqlmon'     => MODPATH.'sqlmon',     // SQL Monitor — обязательно перед Database
    'database'   => MODPATH.'database',   // Database access
    'orm'        => MODPATH.'orm',        // Object Relationship Mapping
    'pagination' => MODPATH.'pagination', // Paging of results
));

Для отображения статистики нужно выполнить

[-]
View Code PHP
<?php echo View::factory('sqlmon/sqlmon'); ?>

Результатом будет нечто вида (скриншот можно кликнуть):

SQLMon для Kohana — пример работы

Настройка. SQLMon использует файлы конфигурации модуля Database — config/database.php. Для контроля поведения SQLMon нужно использовать параметры:

  • backtrace — boolean (по умолчанию true) — должен ли SQLMon отображать трассу вызовов (то, что отображается синим цветом на скриншоте выше);
  • explainboolean (по умолчанию true) — должен ли SQLMon отображать план выполнения запросов (EXPLAIN).

Пример файла конфигурации:

[-]
View Code PHP
<?php
    return array(
        'default' => array(
            'type'          => 'mysql',
            'profiling'     => true,
            'charset'       => 'utf8',
            'table_prefix'  => '',
        // Настройки SQLMon
            'backtrace'     => true,
            'explain'       => true,
        // ---
            'connection'    => array(
                'username'   => 'root',
                'password'   => 'M1dn19ht',
                'hostname'   => 'localhost',
                'persistent' => false,
                'database'   => 'feedfetcher'
            ),
        )
    );
?>

Скачать SQLMon для Kohana 3.

Вложения:

Автор: ; опубликовано в: Kohana; метки: Kohana, Kohana 3, MySQL, SQLMon, оптимизация
9
Фев
2010

RSS Комментарии к статье «SQLMon для Kohana 3» (4)  »

  1. Спасибо за работу. Буду пробывать) Если можно было бы интересно почитать про написание модулей для Kohana 3. (:

  2. [...] в отличие от Kohana, с Code Igniter здесь не всё так просто. Во-первых, Code Igniter не [...]

  3. [...] explain был написан программистов Владимиром, вот ссылка на статью посвящённую этому [...]

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

Оставить комментарий к записи «SQLMon для Kohana 3»

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

*

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

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

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

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