Таблицы плагинов — это таблицы или представления, созданные для или с помощью различных плагинов для движка Firebird. Стандартные таблицы плагинов имеют префикс PLG$
(но могут иметь и другие).
Таблицы плагинов не всегда существуют. Например, некоторые таблицы существуют только в базе данных безопасности, а другие таблицы будут созданы только при первом использовании плагина.
В этом приложении описаны только таблицы плагинов, созданные плагинами, включенными в стандартную поставку Firebird 5.0.
Таблицы плагинов не считаются системными таблицами.
Таблицы профилировщика, перечисленные в этом приложении (имеющие префикс PLG$PROF_
), создаются плагином Default_Profiler
. Если создан собственный плагин профилировщика, он может использовать другие имена таблиц.
Таблицы моментальных снимков, а также представления и последовательности, автоматически создаются при первом использовании профилировщика. Они принадлежат текущему пользователю с разрешениями на чтение/запись для PUBLIC
.
Когда сеанс удаляется, связанные данные в других таблицах моментальных снимков профилировщика также автоматически удаляются с помощью внешних ключей с опцией DELETE CASCADE
.
Ниже приведен список таблиц, в которых хранятся данные профилирования.
- Таблица
PLG$PROF_CURSORS
-
информация о курсорах в сеансе профилирования.
- Таблица
PLG$PROF_PSQL_STATS
-
PSQL статистика в сеансе профилирования.
- Таблица
PLG$PROF_RECORD_SOURCES
-
информация о источниках данных в сеансе профилирования.
- Таблица
PLG$PROF_RECORD_SOURCE_STATS
-
статистика источников данных в сеансе профилирования.
- Таблица
PLG$PROF_REQUESTS
-
информация о SQL запросах в сеансе профилирования.
- Таблица
PLG$PROF_SESSIONS
-
сессии профилирования.
- Таблица
PLG$PROF_STATEMENTS
-
информация о SQL операторах в сеансе профилирования.
Кроме того, плагин Default_Profiler
создаёт несколько представлений. Эти представления помогают извлекать данные профилирования, агрегированные на уровне SQL операторов.
Они должны быть предпочтительным способом анализа собранных данных. Их также можно использовать вместе с таблицами для получения дополнительных данных, отсутствующих в представлениях.
После того, как “горячие точки” найдены, можно детализировать данные на уровне запроса через таблицы.
Ниже приведен список представлений профилировщика Default_Profiler
.
- Представление
PLG$PROF_PSQL_STATS_VIEW
-
агрегированная PSQL статистика в сеансе профилирования.
- Представление
PLG$PROF_RECORD_SOURCE_STATS_VIEW
-
агрегированная статистика по источникам данных в сеансе профилирования.
- Представление
PLG$PROF_STATEMENT_STATS_VIEW
-
агрегированная статистика SQL операторов в сеансе профилирования.
Таблица PLG$PROF_CURSORS
содержит информацию о курсорах.
PLG$PROF_CURSORS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
идентификатор курсора |
|
|
имя явно объявленного курсора |
|
|
номер строки PSQL в которой определён курсор |
|
|
номер столбца PSQL в котором определён курсор |
Первичный ключ `PROFILE_ID, STATEMENT_ID, CURSOR_ID`
Таблица PLG$PROF_PSQL_STATS
содержит PSQL статистику.
PLG$PROF_PSQL_STATS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
идентификатор запроса |
|
|
номер строки в PSQL для оператора |
|
|
номер столбца в PSQL для оператора |
|
|
количество выполнений для номера строки/столбца |
|
|
Минимальное время выполнения (в наносекундах) для строки/столбца |
|
|
Максимальное время выполнения (в наносекундах) для строки/столбца |
|
|
Накопленное время выполнения (в наносекундах) для строки/столбца |
Первичный ключ: PROFILE_ID, STATEMENT_ID, REQUEST_ID, LINE_NUM, COLUMN_NUM
.
Таблица PLG$PROF_RECORD_SOURCES
содержит информацию о источниках данных.
PLG$PROF_RECORD_SOURCES
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
идентификатор курсора |
|
|
идентификатор источника данных |
|
|
идентификатор родительского источника данных |
|
|
уровень отступа для источника данных. Необходим при конструировании подробного плана. |
|
|
описание метода доступа для источника данных |
Первичный ключ: PROFILE_ID, STATEMENT_ID, CURSOR_ID, RECORD_SOURCE_ID
Таблица PLG$PROF_RECORD_SOURCES
содержит статистику по источникам данных.
PLG$PROF_RECORD_SOURCE_STATS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
идентификатор запроса |
|
|
идентификатор курсора |
|
|
идентификатор источника данных |
|
|
количество открытий источника данных |
|
|
Минимальное время открытия источника данных (в наносекундах) |
|
|
Максимальное время открытия источника данных (в наносекундах) |
|
|
Накопленное время открытия источника данных (в наносекундах) |
|
|
Количество извлечений из источника данных |
|
|
Минимальное время извлечения записи из источника данных (в наносекундах) |
|
|
Максимальное время извлечения записи из источника данных (в наносекундах) |
|
|
Накопленное время извлечения записей из источника данных (в наносекундах) |
Первичный ключ: PROFILE_ID, STATEMENT_ID, REQUEST_ID, CURSOR_ID, RECORD_SOURCE_ID
Таблица PLG$PROF_REQUESTS
содержит статистику выполнения SQL запросов.
Если профилировщик запущен с опцией DETAILED_REQUESTS
, то таблица PLG$PROF_REQUESTS
будет хранить подробные данные запросов, то есть одну запись для каждого вызова оператора. Это может привести к созданию большого количества записей, что приведет к медленной работе RDB$PROFILER.FLUSH
.
Когда DETAILED_REQUESTS
не используется (по умолчанию), таблица PLG$PROF_REQUESTS
сохраняет агрегированную запись для каждого оператора, используя REQUEST_ID = 0
.
PLG$PROF_REQUESTS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор SQL оператора |
|
|
идентификатор запроса |
|
|
идентификатор SQL оператора |
|
|
идентификатор вызывающего запроса |
|
|
момент старта запроса |
|
|
момент завершения запроса |
|
|
Накопленное время выполнения запроса (в наносекундах) |
Первичный ключ: PROFILE_ID, STATEMENT_ID, REQUEST_ID
.
Таблица PLG$PROF_SESSIONS
содержит информацию о сессиях профилирования.
PLG$PROF_SESSIONS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор соединения для которого производится профилирование |
|
|
имя пользователя |
|
|
описание переданное в параметре |
|
|
момент начала сессии профилирования |
|
|
момент окончания сессии профилирования (NULL если сессия не завершена) |
Первичный ключ: PROFILE_ID
Таблица PLG$PROF_STATEMENTS
содержит информацию об SQL операторах.
PLG$PROF_STATEMENTS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
родительский идентификатор запроса - относится к подпрограммам. |
|
|
типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя пакета |
|
|
Имя функции, процедуры или триггера |
|
|
SQL текст для типа BLOCK |
Первичный ключ: PROFILE_ID, STATEMENT_ID
Представление PLG$PROF_PSQL_STATS_VIEW
содержит агрегированную PSQL статистику.
PLG$PROF_PSQL_STATS_VIEW
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя пакета |
|
|
Имя функции, процедуры или триггера |
|
|
идентификатор родительского оператора |
|
|
типа родительского оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя родительской функции, процедуры или триггера |
|
|
SQL текст для операторов типа BLOCK |
|
|
номер строки в PSQL для оператора |
|
|
номер столбца в PSQL для оператора |
|
|
количество выполнений для номера строки/столбца |
|
|
Минимальное время выполнения (в наносекундах) для строки/столбца |
|
|
Максимальное время выполнения (в наносекундах) для строки/столбца |
|
|
Накопленное время выполнения (в наносекундах) для строки/столбца |
|
|
Среднее время выполнения (в наносекундах) для строки/столбца |
Представление PLG$PROF_RECORD_SOURCE_STATS_VIEW
содержит агрегированную статистику по методам доступа.
PLG$PROF_RECORD_SOURCE_STATS_VIEW
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя пакета |
|
|
Имя функции, процедуры или триггера |
|
|
идентификатор родительского оператора |
|
|
типа родительского оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя родительской функции, процедуры или триггера |
|
|
SQL текст для типа BLOCK |
|
|
идентификатор курсора |
|
|
имя явно объявленного курсора |
|
|
номер строки в которой определён курсор |
|
|
номер столбца в котором определён курсор |
|
|
идентификатор источника данных |
|
|
идентификатор родительского источника данных |
|
|
уровень метода доступа. Необходим для расчёта отступов при конструировании плана. |
|
|
описание метода доступа для источника данных |
|
|
количество открытий источника данных |
|
|
Минимальное время открытия источника данных (в наносекундах) |
|
|
Максимальное время открытия источника данных (в наносекундах) |
|
|
Накопленное время открытия источника данных (в наносекундах) |
|
|
Среднее время открытия источника данных (в наносекундах) |
|
|
Количество извлечений из источника данных |
|
|
Минимальное время извлечения записи из источника данных (в наносекундах) |
|
|
Максимальное время извлечения записи из источника данных (в наносекундах) |
|
|
Накопленное время извлечения записей из источника данных (в наносекундах) |
|
|
Среднее время извлечения записей из источника данных (в наносекундах) |
Представление PLG$PROF_STATEMENT_STATS_VIEW
содержит агрегированную статистику SQL операторов.
PLG$PROF_STATEMENT_STATS_VIEW
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
идентификатор сессии профилирования |
|
|
идентификатор оператора |
|
|
типа оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя пакета |
|
|
Имя функции, процедуры или триггера |
|
|
идентификатор родительского оператора |
|
|
типа родительского оператора BLOCK, FUNCTION, PROCEDURE или TRIGGER |
|
|
Имя родительской функции, процедуры или триггера |
|
|
SQL текст для типа BLOCK |
|
|
количество выполнений для номера строки/столбца |
|
|
Минимальное время выполнения (в наносекундах) для строки/столбца |
|
|
Максимальное время выполнения (в наносекундах) для строки/столбца |
|
|
Накопленное время выполнения (в наносекундах) для строки/столбца |
|
|
Среднее время выполнения (в наносекундах) для строки/столбца |
Таблица PLG$SRP
хранит список пользователей и информацию для их аутентификации плагинами аутентификации семейства SRP.
PLG$SRP
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
Имя пользователя |
|
|
Srp verifier |
|
|
Соль |
|
|
Текстовый комментарий |
|
|
Первое имя (имя) |
|
|
Среднее имя (отчество) |
|
|
Последнее имя (фамилия) |
|
|
Пользовательские аттрибуты (теги) |
|
|
Флаг - активен ли пользователь |
Представление PLG$SRP_VIEW
определяет какие пользователи доступны для просмотра через виртуальную таблицу SEC$USERS
и
изменения с помощью оператор ALTER USER …
.
PLG$SRP_VIEW
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
Имя пользователя |
|
|
Srp verifier |
|
|
Соль |
|
|
Текстовый комментарий |
|
|
Первое имя (имя) |
|
|
Среднее имя (отчество) |
|
|
Последнее имя (фамилия) |
|
|
Пользовательские аттрибуты (теги) |
|
|
Флаг - активен ли пользователь |
Данное представление хранит следующий 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
Таблица PLG$USERS
хранит список пользователей и информацию для их аутентификации плагином аутентификации Legacy_Auth
.
PLG$USERS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
Имя пользователя |
|
|
Имя группы |
|
|
Имя группы |
|
|
Идентификатор пользователя в POSIX |
|
|
Идентификатор группы в POSIX |
|
|
Хеш пароля |
|
|
Текстовый комментарий |
|
|
Первое имя (имя) |
|
|
Среднее имя (отчество) |
|
|
Последнее имя (фамилия) |
Представление PLG$VIEW_USERS
определяет какие пользователи доступны для просмотра через виртуальную таблицу SEC$USERS
и
изменения с помощью оператор ALTER USER …
.
PLG$VIEW_USERS
Наименование столбца | Тип данных | Описание |
---|---|---|
|
|
Имя пользователя |
|
|
Имя группы |
|
|
Имя группы |
|
|
Идентификатор пользователя в POSIX |
|
|
Идентификатор группы в POSIX |
|
|
Хеш пароля |
|
|
Текстовый комментарий |
|
|
Первое имя (имя) |
|
|
Среднее имя (отчество) |
|
|
Последнее имя (фамилия) |
Данное представление хранит следующий 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