Настройка метрик 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_register | bool | Добавлять в таблицу только явно зарегистрированные запросы | false |
queryid_max_saved | integer | Предельное количество операторов и их идентификаторов, сохраняемых в системной таблице qhb_queryid | 1000 |
queryid_update_threshold | interval | Дискретность обновления временной метки доступа к записи | 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_normalize | bool | Разрешить/запретить нормализацию текста операторов |
metrics_queryid_register | string | Зарегистрировать оператор, присвоив ему идентификатор |
metrics_queryid_enable | string | Разрешить генерацию метрик для оператора (или нескольких) |
metrics_queryid_disable | string | Запретить генерацию метрик для оператора (или нескольких) |
metrics_queryid_disable_all | Запретить генерацию метрик для всех операторов | |
metrics_queryid_rename | string, string | Связать с оператором новое имя |
metrics_queryid_clear_name | string | Очистить имя оператора |
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 показывает текущие значения параметров.