Профайлинг запросов MySql в PHP

December 22, 2015

Часто в нашем приложении мы хотим узнать, сколько времени выполняется тот или иной запрос. Например, мы хотим отлавливать медленные запросы и уведомлять об нас этом. Как это делается - в этой статье

Задача: есть php-скрипт, выполняющий sql-запросы. Нам необходимо узнать время выполнения каждого запроса. В примере будем использовать объект mysqli.

Делаем это так:

// Поключаемся к базе данных
$dbConn = new mysqli('localhost', 'user', 'password', 'dbname');

// Устанавливаем режим профайлинга
$dbConn->query('set profiling=1');

// Выполняем наш запрос
$dbConn->query('select * from goods');
$data_profile = $dbConn->query('show profiles');

// Получаем данные о профайлинге
$row = $data_profile->fetch_array();

// Отменяем режим профайлинга
$dbConn->query('set profiling=0');

// Выведем данные на экран
print_r($row);

// Получим время выполнения и строку sql-запроса
$duration = $row['Duration'];
$query = $row['Query'];

printf('Запрос: %s. Время выполнения - %s', $query, $duration);

Комментарии

comments powered by Disqus