Настройка метрик queryid

Каталог операторов SQL, зарегистрированных для метрик queryid

Группа метрик queryid позволяет вести мониторинг работы отдельных операторов SQL. Для этого имена метрик формируются с использование идентификатора того или иного оператора. Для хранения текстов операторов используется системный каталог qhb_queryid. При добавлении нового оператора в эту таблицу ему присваивается идентификатор, а также может быть присвоено имя. При анализе метрик можно быстро отыскать полный текст оператора SQL, к которому относятся эти метрики.

Список метрик группы queryid содержится в подразделе queryid.

Для управления этим каталогом (особенно важно предотвратить его неконтролируемое разрастание) предусмотрены функции, доступные пользователю, и параметры конфигурации.

Включить группу метрик queryid (она по умолчанию отключена) можно так же, как и остальные группы метрик:

SELECT metrics_config_enable_group('queryid', false);

Описание этой функции (и парной ей для выключения) содержится в Таблице 63.

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


Параметры конфигурации для настройки работы метрик queryid

Имя параметраТипОписаниеЗначение по умолчанию
queryid_auto_registerboolДобавлять в таблицу только явно зарегистрированные запросыfalse
queryid_max_savedintegerПредельное количество операторов и их идентификаторов, сохраняемых в системной таблице qhb_queryid1000
queryid_update_thresholdintervalДискретность обновления временной метки доступа к записи1min

Параметр queryid_auto_register разрешает автоматическую регистрацию всех поступающих на выполнение операторов. Поскольку их может быть много, флаги active при этом устанавливаются в false. Если запретить автоматическую регистрацию, то при явной регистрации оператора (см. далее) его флаг active устанавливается в true. Для работы с метриками флаг active хотя бы одного оператора нужно будет выставить в true.

Параметр queryid_max_saved нужен для управления автоочисткой таблицы qhb_queryid. По достижении количества записей значения, указанного в queryid_max_saved, будет вызвана процедура очистки, которая удалит записи с самыми старыми значениями временной метки доступа last_used. При этом именованные записи не будут удаляться, пока остается хотя бы одна неименованная запись.

Параметр queryid_update_threshold призван уменьшить нагрузку на базу данных в случае потока одних и тех же операторов. В файле конфигурации он может быть задан, как и другие временные параметры, с использованием суффиксов ms, s и min.


«Виртуальный» параметр queryid_normalize

Существует еще один, «виртуальный», параметр queryid_normalize = true, который не присутствует в файле конфигурации, но может быть временно, только в контексте одного сеанса подключения к базе данных, изменен вызовом функции metrics_queryid_normalize(false). После этого тексты обрабатываемых операторов не будут подвергаться процедуре нормализации, которая, в частности, абстрагирует значения параметров запросов. Таким образом, станет возможно проследить за работой оператора с конкретными значениями параметров.



Функции для работы с метриками queryid

ИмяПараметрыОписание
metrics_queryid_normalizeboolРазрешить/запретить нормализацию текста операторов
metrics_queryid_registerstringЗарегистрировать оператор, присвоив ему идентификатор
metrics_queryid_enablestringРазрешить генерацию метрик для оператора (или нескольких)
metrics_queryid_disablestringЗапретить генерацию метрик для оператора (или нескольких)
metrics_queryid_disable_allЗапретить генерацию метрик для всех операторов
metrics_queryid_renamestring, stringСвязать с оператором новое имя
metrics_queryid_clear_namestringОчистить имя оператора
metrics_queryid_showПоказать текущие значения параметров
metrics_queryid_normalize(true или false)

Функция metrics_queryid_normalize разрешает или запрещает нормализацию текстов запросов (только в контексте текущего процесса бэкенда). По умолчанию — true, то есть нормализация выполняется.

metrics_queryid_register('текст запроса')

Функция metrics_queryid_register регистрирует запрос (любой оператор SQL или даже произвольную строку): вставляет запись в таблицу qhb_queryid сразу в активизированном состоянии, но не исполняет сам запрос. Пустая строка в качестве аргумента не допускается. В случае успешной регистрации запроса регистрируется полный набор метрик с соответствующим QueryId. Если запрос построен некорректно и не сможет быть исполнен позже, эти метрики никогда не сгенерируются. Если установлен параметр конфигурации queryid_auto_register=true, использование этой функции становится необязательным, но будут регистрироваться все подряд исполняемые операторы SQL, что часто нежелательно.

metrics_queryid_enable('id или имя или список')

Функция metrics_queryid_enable разрешает запросу, связанному с указанным QueryId или именем, генерировать метрики. Пустая строка в качестве аргумента не допускается. Разрешается передавать несколько идентификаторов или имен в виде списка через запятую. Разрешается передавать идентификатор не полностью, а только первые символы при условии, что они однозначно определяют единственный существующий QueryId.

metrics_queryid_disable('id или имя или список')

Функция metrics_queryid_disable запрещает запросу, связанному с указанным QueryId или именем, генерировать метрики. Пустая строка в качестве аргумента не допускается. Разрешается передавать несколько идентификаторов или имен в виде списка через запятую. Разрешается передавать идентификатор не полностью, а только первые символы при условии, что они однозначно определяют единственный существующий QueryId.

metrics_queryid_disable_all()

Функция metrics_queryid_disable_all запрещает всем зарегистрированным запросам генерировать метрики.

metrics_queryid_rename('id или имя', 'новое имя')

Функция metrics_queryid_rename связывает запрос с известным QueryId или ранее установленным именем с новым именем. Пустые строки в качестве аргументов не допускаются. Списки в качестве аргументов не допускаются. Существующие имена или QueryId в качестве нового имени не допускаются. В случае успешного связывания регистрируется полный набор метрик с новым именем.

metrics_queryid_clear_name('id или имя или список')

Функция metrics_queryid_clear_name удаляет связь существующих запросов с именем. Пустая строка в качестве аргумента не допускается. Разрешается передавать несколько идентификаторов или имен в виде списка через запятую. Разрешается передавать идентификатор не полностью, а только первые символы при условии, что они однозначно определяют единственный существующий QueryId. В случае, если удаление действительно произошло, заново регистрируется полный набор метрик с соответствующим QueryId.

metrics_queryid_show();

Функция metrics_queryid_show показывает текущие значения параметров.