FirebirdSQL logo

Плагин профилирования Default_Profiler

Таблицы профилировщика, перечисленные в этом приложении (имеющие префикс PLG$PROF_), создаются плагином Default_Profiler. Если создан собственный плагин профилировщика, он может использовать другие имена таблиц.

Таблицы моментальных снимков, а также представления и последовательности, автоматически создаются при первом использовании профилировщика. Они принадлежат текущему пользователю с разрешениями на чтение/запись для PUBLIC.

Когда сеанс удаляется, связанные данные в других таблицах моментальных снимков профилировщика также автоматически удаляются с помощью внешних ключей с опцией DELETE CASCADE.

Ниже приведен список таблиц, в которых хранятся данные профилирования.

[fblangref-appx07-profcursors]

информация о курсорах в сеансе профилирования.

[fblangref-appx07-profpsqlstats]

PSQL статистика в сеансе профилирования.

[fblangref-appx07-profrecordsources]

информация о источниках данных в сеансе профилирования.

[fblangref-appx07-profrecordsourcesstats]

статистика источников данных в сеансе профилирования.

[fblangref-appx07-profrequests]

информация о SQL запросах в сеансе профилирования.

[fblangref-appx07-profsessions]

сессии профилирования.

[fblangref-appx07-profstatements]

информация о SQL операторах в сеансе профилирования.

Кроме того, плагин Default_Profiler создаёт несколько представлений. Эти представления помогают извлекать данные профилирования, агрегированные на уровне SQL операторов.

Они должны быть предпочтительным способом анализа собранных данных. Их также можно использовать вместе с таблицами для получения дополнительных данных, отсутствующих в представлениях.

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

Ниже приведен список представлений профилировщика Default_Profiler.

[fblangref-appx07-profpsqlstatsview]

агрегированная PSQL статистика в сеансе профилирования.

[fblangref-appx07-profrecordsourcestatsview]

агрегированная статистика по источникам данных в сеансе профилирования.

[fblangref-appx07-profstatementstatsview]

агрегированная статистика SQL операторов в сеансе профилирования.

Таблица PLG$PROF_CURSORS

Таблица PLG$PROF_CURSORS содержит информацию о курсорах.

Table 1. Описание столбцов таблицы PLG$PROF_CURSORS
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

CURSOR_ID

BIGINT

идентификатор курсора

NAME

CHAR(63)

имя явно объявленного курсора

LINE_NUM

INTEGER

номер строки PSQL в которой определён курсор

COLUMN_NUM

INTEGER

номер столбца PSQL в котором определён курсор

Первичный ключ `PROFILE_ID, STATEMENT_ID, CURSOR_ID`

docnext count = 13

Представление PLG$PROF_STATEMENT_STATS_VIEW

Представление PLG$PROF_STATEMENT_STATS_VIEW содержит агрегированную статистику SQL операторов.

Table 1. Описание столбцов представления PLG$PROF_STATEMENT_STATS_VIEW
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

STATEMENT_TYPE

VARCHAR(20)

типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PACKAGE_NAME

CHAR(63)

Имя пакета

ROUTINE_NAME

CHAR(63)

Имя функции, процедуры или триггера

PARENT_STATEMENT_ID

BIGINT

идентификатор родительского оператора

PARENT_STATEMENT_TYPE

VARCHAR(20)

типа родительского оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PARENT_ROUTINE_NAME

CHAR(63)

Имя родительской функции, процедуры или триггера

SQL_TEXT

BLOB SUB_TYPE TEXT

SQL текст для типа BLOCK

COUNTER

BIGINT

количество выполнений для номера строки/столбца

MIN_ELAPSED_TIME

BIGINT

Минимальное время выполнения (в наносекундах) для строки/столбца

MAX_ELAPSED_TIME

BIGINT

Максимальное время выполнения (в наносекундах) для строки/столбца

TOTAL_ELAPSED_TIME

BIGINT

Накопленное время выполнения (в наносекундах) для строки/столбца

AVG_ELAPSED_TIME

BIGINT

Среднее время выполнения (в наносекундах) для строки/столбца

Плагин управления пользователями Srp

Таблица PLG$SRP

Таблица PLG$SRP хранит список пользователей и информацию для их аутентификации плагинами аутентификации семейства SRP.

Table 1. Описание столбцов таблицы PLG$SRP
Наименование столбца Тип данных Описание

PLG$USER_NAME

VARCHAR(63)

Имя пользователя

PLG$VERIFIER

VARBINARY(128)

Srp verifier

PLG$SALT

VARBINARY(32)

Соль

PLG$COMMENT

BLOB SUB_TYPE TEXT

Текстовый комментарий

PLG$FIRST

VARCHAR(32)

Первое имя (имя)

PLG$MIDDLE

VARCHAR(32)

Среднее имя (отчество)

PLG$LAST

VARCHAR(32)

Последнее имя (фамилия)

PLG$ATTRIBUTES

BLOB SUB_TYPE TEXT

Пользовательские аттрибуты (теги)

PLG$ACTIVE

BOOLEAN

Флаг - активен ли пользователь

Представление PLG$SRP_VIEW

Представление PLG$SRP_VIEW определяет какие пользователи доступны для просмотра через виртуальную таблицу SEC$USERS иизменения с помощью оператор ALTER USER …​.

Table 1. Описание столбцов представления PLG$SRP_VIEW
Наименование столбца Тип данных Описание

PLG$USER_NAME

VARCHAR(63)

Имя пользователя

PLG$VERIFIER

VARBINARY(128)

Srp verifier

PLG$SALT

VARBINARY(32)

Соль

PLG$COMMENT

BLOB SUB_TYPE TEXT

Текстовый комментарий

PLG$FIRST

VARCHAR(32)

Первое имя (имя)

PLG$MIDDLE

VARCHAR(32)

Среднее имя (отчество)

PLG$LAST

VARCHAR(32)

Последнее имя (фамилия)

PLG$ATTRIBUTES

BLOB SUB_TYPE TEXT

Пользовательские аттрибуты (теги)

PLG$ACTIVE

BOOLEAN

Флаг - активен ли пользователь

Данное представление хранит следующий SQL запрос

SELECT
  PLG$USER_NAME,
  PLG$VERIFIER,
  PLG$SALT,
  PLG$COMMENT,
  PLG$FIRST,
  PLG$MIDDLE,
  PLG$LAST,
  PLG$ATTRIBUTES,
  PLG$ACTIVE
FROM PLG$SRP
WHERE RDB$SYSTEM_PRIVILEGE(USER_MANAGEMENT) OR CURRENT_USER = PLG$SRP.PLG$USER_NAME

Плагин управления пользователями Legacy_UserManager

Таблица PLG$USERS

Таблица PLG$USERS хранит список пользователей и информацию для их аутентификации плагином аутентификации Legacy_Auth.

Table 1. Описание столбцов таблицы PLG$USERS
Наименование столбца Тип данных Описание

PLG$USER_NAME

VARCHAR(63)

Имя пользователя

PLG$GROUP_NAME

VARCHAR(63)

Имя группы

PLG$GROUP_NAME

VARCHAR(63)

Имя группы

PLG$UID

INTEGER

Идентификатор пользователя в POSIX

PLG$GID

INTEGER

Идентификатор группы в POSIX

PLG$PASSWD

VARBINARY(64)

Хеш пароля

PLG$COMMENT

BLOB SUB_TYPE TEXT

Текстовый комментарий

PLG$FIRST_NAME

VARCHAR(32)

Первое имя (имя)

PLG$MIDDLE_NAME

VARCHAR(32)

Среднее имя (отчество)

PLG$LAST_NAME

VARCHAR(32)

Последнее имя (фамилия)

Представление PLG$VIEW_USERS

Представление PLG$VIEW_USERS определяет какие пользователи доступны для просмотра через виртуальную таблицу SEC$USERS иизменения с помощью оператор ALTER USER …​.

Table 1. Описание столбцов представления PLG$VIEW_USERS
Наименование столбца Тип данных Описание

PLG$USER_NAME

VARCHAR(63)

Имя пользователя

PLG$GROUP_NAME

VARCHAR(63)

Имя группы

PLG$GROUP_NAME

VARCHAR(63)

Имя группы

PLG$UID

INTEGER

Идентификатор пользователя в POSIX

PLG$GID

INTEGER

Идентификатор группы в POSIX

PLG$PASSWD

VARBINARY(64)

Хеш пароля

PLG$COMMENT

BLOB SUB_TYPE TEXT

Текстовый комментарий

PLG$FIRST_NAME

VARCHAR(32)

Первое имя (имя)

PLG$MIDDLE_NAME

VARCHAR(32)

Среднее имя (отчество)

PLG$LAST_NAME

VARCHAR(32)

Последнее имя (фамилия)

Данное представление хранит следующий SQL запрос

SELECT
  PLG$USER_NAME,
  PLG$GROUP_NAME,
  PLG$UID,
  PLG$GID,
  PLG$PASSWD,
  PLG$COMMENT,
  PLG$FIRST_NAME,
  PLG$MIDDLE_NAME,
  PLG$LAST_NAME
FROM PLG$USERS
WHERE CURRENT_USER = 'SYSDBA'
   OR CURRENT_ROLE = 'RDB$ADMIN'
   OR CURRENT_USER = PLG$USERS.PLG$USER_NAME

Таблица PLG$PROF_PSQL_STATS

Таблица PLG$PROF_PSQL_STATS содержит PSQL статистику.

Table 1. Описание столбцов таблицы PLG$PROF_PSQL_STATS
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

REQUEST_ID

BIGINT

идентификатор запроса

LINE_NUM

INTEGER

номер строки в PSQL для оператора

COLUMN_NUM

INTEGER

номер столбца в PSQL для оператора

COUNTER

BIGINT

количество выполнений для номера строки/столбца

MIN_ELAPSED_TIME

BIGINT

Минимальное время выполнения (в наносекундах) для строки/столбца

MAX_ELAPSED_TIME

BIGINT

Максимальное время выполнения (в наносекундах) для строки/столбца

TOTAL_ELAPSED_TIME

BIGINT

Накопленное время выполнения (в наносекундах) для строки/столбца

Первичный ключ: PROFILE_ID, STATEMENT_ID, REQUEST_ID, LINE_NUM, COLUMN_NUM.

Таблица PLG$PROF_RECORD_SOURCES

Таблица PLG$PROF_RECORD_SOURCES содержит информацию о источниках данных.

Table 1. Описание столбцов таблицы PLG$PROF_RECORD_SOURCES
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

CURSOR_ID

BIGINT

идентификатор курсора

RECORD_SOURCE_ID

BIGINT

идентификатор источника данных

PARENT_RECORD_SOURCE_ID

BIGINT

идентификатор родительского источника данных

LEVEL

INTEGER

уровень отступа для источника данных. Необходим при конструировании подробного плана.

ACCESS_PATH

BLOB SUB_TYPE TEXT

описание метода доступа для источника данных

Первичный ключ: PROFILE_ID, STATEMENT_ID, CURSOR_ID, RECORD_SOURCE_ID

Таблица PLG$PROF_RECORD_SOURCE_STATS

Таблица PLG$PROF_RECORD_SOURCES содержит статистику по источникам данных.

Table 1. Описание столбцов таблицы PLG$PROF_RECORD_SOURCE_STATS
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

REQUEST_ID

BIGINT

идентификатор запроса

CURSOR_ID

BIGINT

идентификатор курсора

RECORD_SOURCE_ID

BIGINT

идентификатор источника данных

OPEN_COUNTER

BIGINT

количество открытий источника данных

OPEN_MIN_ELAPSED_TIME

BIGINT

Минимальное время открытия источника данных (в наносекундах)

OPEN_MAX_ELAPSED_TIME

BIGINT

Максимальное время открытия источника данных (в наносекундах)

OPEN_TOTAL_ELAPSED_TIME

BIGINT

Накопленное время открытия источника данных (в наносекундах)

FETCH_COUNTER

BIGINT

Количество извлечений из источника данных

FETCH_MIN_ELAPSED_TIME

BIGINT

Минимальное время извлечения записи из источника данных (в наносекундах)

FETCH_MAX_ELAPSED_TIME

BIGINT

Максимальное время извлечения записи из источника данных (в наносекундах)

FETCH_TOTAL_ELAPSED_TIME

BIGINT

Накопленное время извлечения записей из источника данных (в наносекундах)

Первичный ключ: PROFILE_ID, STATEMENT_ID, REQUEST_ID, CURSOR_ID, RECORD_SOURCE_ID

Таблица PLG$PROF_REQUESTS

Таблица PLG$PROF_REQUESTS содержит статистику выполнения SQL запросов.

Если профилировщик запущен с опцией DETAILED_REQUESTS, то таблица PLG$PROF_REQUESTS будет хранить подробные данные запросов, то есть одну запись для каждого вызова оператора. Это может привести к созданию большого количества записей, что приведет к медленной работе RDB$PROFILER.FLUSH.

Когда DETAILED_REQUESTS не используется (по умолчанию), таблица PLG$PROF_REQUESTS сохраняет агрегированную запись для каждого оператора, используя REQUEST_ID = 0.

Table 1. Описание столбцов таблицы PLG$PROF_REQUESTS
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор SQL оператора

REQUEST_ID

BIGINT

идентификатор запроса

CALLER_STATEMENT_ID

BIGINT

идентификатор SQL оператора

CALLER_REQUEST_ID

BIGINT

идентификатор вызывающего запроса

START_TIMESTAMP

TIMESTAMP WITH TIME ZONE

момент старта запроса

FINISH_TIMESTAMP

TIMESTAMP WITH TIME ZONE

момент завершения запроса

TOTAL_ELAPSED_TIME

BIGINT

Накопленное время выполнения запроса (в наносекундах)

Первичный ключ: PROFILE_ID, STATEMENT_ID, REQUEST_ID.

Таблица PLG$PROF_SESSIONS

Таблица PLG$PROF_SESSIONS содержит информацию о сессиях профилирования.

Table 1. Описание столбцов таблицы PLG$PROF_SESSIONS
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

ATTACHMENT_ID

BIGINT

идентификатор соединения для которого производится профилирование

USER_NAME

CHAR(63)

имя пользователя

DESCRIPTION

VARCHAR(255)

описание переданное в параметре RDB$PROFILER.START_SESSION

START_TIMESTAMP

TIMESTAMP WITH TIME ZONE

момент начала сессии профилирования

FINISH_TIMESTAMP

TIMESTAMP WITH TIME ZONE

момент окончания сессии профилирования (NULL если сессия не завершена)

Первичный ключ: PROFILE_ID

Таблица PLG$PROF_STATEMENTS

Таблица PLG$PROF_STATEMENTS содержит информацию об SQL операторах.

Table 1. Описание столбцов таблицы PLG$PROF_STATEMENTS
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

PARENT_STATEMENT_ID

BIGINT

родительский идентификатор запроса - относится к подпрограммам.

STATEMENT_TYPE

VARCHAR(20)

типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PACKAGE_NAME

CHAR(63)

Имя пакета

ROUTINE_NAME

CHAR(63)

Имя функции, процедуры или триггера

SQL_TEXT

BLOB SUB_TYPE TEXT

SQL текст для типа BLOCK

Первичный ключ: PROFILE_ID, STATEMENT_ID

Представление PLG$PROF_PSQL_STATS_VIEW

Представление PLG$PROF_PSQL_STATS_VIEW содержит агрегированную PSQL статистику.

Table 1. Описание столбцов представления PLG$PROF_PSQL_STATS_VIEW
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

STATEMENT_TYPE

VARCHAR(20)

типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PACKAGE_NAME

CHAR(63)

Имя пакета

ROUTINE_NAME

CHAR(63)

Имя функции, процедуры или триггера

PARENT_STATEMENT_ID

BIGINT

идентификатор родительского оператора

PARENT_STATEMENT_TYPE

VARCHAR(20)

типа родительского оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PARENT_ROUTINE_NAME

CHAR(63)

Имя родительской функции, процедуры или триггера

SQL_TEXT

BLOB SUB_TYPE TEXT

SQL текст для операторов типа BLOCK

LINE_NUM

INTEGER

номер строки в PSQL для оператора

COLUMN_NUM

INTEGER

номер столбца в PSQL для оператора

COUNTER

BIGINT

количество выполнений для номера строки/столбца

MIN_ELAPSED_TIME

BIGINT

Минимальное время выполнения (в наносекундах) для строки/столбца

MAX_ELAPSED_TIME

BIGINT

Максимальное время выполнения (в наносекундах) для строки/столбца

TOTAL_ELAPSED_TIME

BIGINT

Накопленное время выполнения (в наносекундах) для строки/столбца

AVG_ELAPSED_TIME

BIGINT

Среднее время выполнения (в наносекундах) для строки/столбца

Представление PLG$PROF_RECORD_SOURCE_STATS_VIEW

Представление PLG$PROF_RECORD_SOURCE_STATS_VIEW содержит агрегированную статистику по методам доступа.

Table 1. Описание столбцов представления PLG$PROF_RECORD_SOURCE_STATS_VIEW
Наименование столбца Тип данных Описание

PROFILE_ID

BIGINT

идентификатор сессии профилирования

STATEMENT_ID

BIGINT

идентификатор оператора

STATEMENT_TYPE

VARCHAR(20)

типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PACKAGE_NAME

CHAR(63)

Имя пакета

ROUTINE_NAME

CHAR(63)

Имя функции, процедуры или триггера

PARENT_STATEMENT_ID

BIGINT

идентификатор родительского оператора

PARENT_STATEMENT_TYPE

VARCHAR(20)

типа родительского оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER

PARENT_ROUTINE_NAME

CHAR(63)

Имя родительской функции, процедуры или триггера

SQL_TEXT

BLOB SUB_TYPE TEXT

SQL текст для типа BLOCK

CURSOR_ID

BIGINT

идентификатор курсора

NAME

CHAR(63)

имя явно объявленного курсора

CURSOR_LINE_NUM

INTEGER

номер строки в которой определён курсор

CURSOR_COLUMN_NUM

INTEGER

номер столбца в котором определён курсор

RECORD_SOURCE_ID

BIGINT

идентификатор источника данных

PARENT_RECORD_SOURCE_ID

BIGINT

идентификатор родительского источника данных

LEVEL

INTEGER

уровень метода доступа. Необходим для расчёта отступов при конструировании плана.

ACCESS_PATH

BLOB SUB_TYPE TEXT

описание метода доступа для источника данных

OPEN_COUNTER

BIGINT

количество открытий источника данных

OPEN_MIN_ELAPSED_TIME

BIGINT

Минимальное время открытия источника данных (в наносекундах)

OPEN_MAX_ELAPSED_TIME

BIGINT

Максимальное время открытия источника данных (в наносекундах)

OPEN_TOTAL_ELAPSED_TIME

BIGINT

Накопленное время открытия источника данных (в наносекундах)

OPEN_AVG_ELAPSED_TIME

BIGINT

Среднее время открытия источника данных (в наносекундах)

FETCH_COUNTER

BIGINT

Количество извлечений из источника данных

FETCH_MIN_ELAPSED_TIME

BIGINT

Минимальное время извлечения записи из источника данных (в наносекундах)

FETCH_MAX_ELAPSED_TIME

BIGINT

Максимальное время извлечения записи из источника данных (в наносекундах)

FETCH_TOTAL_ELAPSED_TIME

BIGINT

Накопленное время извлечения записей из источника данных (в наносекундах)

FETCH_AVG_ELAPSED_TIME

BIGINT

Среднее время извлечения записей из источника данных (в наносекундах)