psql_data_lineage. Сбор информации о движении данных
Версия: 1.0.0.
В исходном дистрибутиве установлено по умолчанию: да.
Связанные компоненты: отсутствуют.
Схема размещения:
public.
Разработано СУБД Pangolin.
Расширение предназначено для сбора информации о движении данных внутри БД.
Объекты
Параметры конфигурирования расширения
В рамках реализации функциональности были добавлены параметры:
Параметр | Тип | Значение по умолчанию | Контекст | Описание |
|---|---|---|---|---|
|
| – |
| Суффикс, добавляемый к уникальным идентификаторам; может быть использован для обеспечения уникальности идентификаторов между различными экземплярами СУБД при централизованном сборе DL |
|
|
|
| Включение функциональности по определению потоков данных и связанной статистической информации |
|
|
|
| Максимальное количество записей о статистике уникальных запросов DL (определяется уникальным идентификатором запроса с учетом наименования объектов). Интервал допустимых значений: |
|
| – |
| Исключенные БД, по ним статистика не ведется. Параметр |
|
| – |
| Включенные БД. Статистика будет собираться по этим базам данных. Если параметр не заполнен, то данные будут собираться по всем таблицам (если переменная |
|
|
|
| Параметр конфигурации расширения со значением по умолчанию Можно задать либо относительный путь ( |
Функции
Во всех приведенных далее функциях отсутствуют входные параметры.
psql_data_lineage_objects_meta – метаданные об объектах, участвующих в данном потоке данных.
Выходной параметр | Тип | Описание |
|---|---|---|
|
| Идентификатор запроса, обработанного Data Lineage (не совпадает с |
|
| Идентификатор объекта в рамках СУБД на момент выполнения запроса |
|
| Полное имя объекта в рамках данного потока данных |
|
| Полное имя объекта в рамках БД |
|
| Идентификатор базы данных на момент выполнения запроса |
|
| Тип объекта* |
psql_data_lineage_attributes_meta – метаданные об атрибутах объектов, участвующих в данном потоке данных.
Выходной параметр | Тип | Описание |
|---|---|---|
|
| Идентификатор запроса, обработанного Data Lineage (не совпадает с |
|
| Идентификатор объекта в рамках СУБД на момент выполнения запроса |
|
| Полное имя объекта |
|
| Порядковый номер атрибута. Нумерация начинается с |
|
| Полное имя объекта |
|
| Тип объекта* |
psql_data_lineage_objects – определение потока данных, включая источники/приемники запроса, а также статистическую информацию о потоках.
Выходной параметр | Тип | Описание |
|---|---|---|
|
| Идентификатор. Через этот идентификатор происходит связывание со всеми остальными предоставляемыми данными. Идентификатор формируется на основе идентификатора запроса расширенного метаинформацией ( Номер потока разделяет потоки в рамках одного запроса. Такие потоки появляются в запросах |
|
| Время начала последнего исполнения запроса |
|
| Тип объекта источника* |
|
| Идентификатор объекта источника (пустой при |
|
| Тип объекта приемника* |
|
| Идентификатор объекта приемника |
|
| Текст последнего исполненного плана |
|
| Генерализованный текст запроса |
|
| Время начала первого исполнения запроса |
|
| Длительность последнего исполнения запроса |
|
| Количество успешных исполнений запроса с начала сбора статистики |
|
| Суммарное количество строк, обработанных запросом с начала сбора статистики |
|
| Идентификатор запроса в рамках БД |
|
| Идентификатор родительского запроса, обработанного Data Lineage (не совпадает с Запросы могут иметь вложенный характер. Это поле позволяет отследить цепочку вызовов. Для порождающего запроса в качестве родительского указывается он сам |
|
| Идентификатор запроса, обработанного Data Lineage (не совпадает с |
psql_data_lineage_attributes – информация о движении данных на уровне атрибутов.
Выходной параметр | Тип | Описание |
|---|---|---|
|
| Идентификатор потока данных уровня атрибутов |
|
| Тип объекта источника* |
|
| Идентификатор объекта источника |
|
| Номер атрибута источника |
|
| Номер атрибута приемника |
|
| Идентификатор потока для связи с данными из |
psql_data_lineage_freeze_data – создает файл dl_freezed_stat.stat собранных данных, по которой выполняются все операции просмотра в текущем процессе (до отмены/удаления).
| Тип результата | Описание |
|---|---|
integer | Количество замороженных записей |
psql_data_lineage_reset_freezed – консистентно обновляет замороженные данные, созданные функцией psql_data_lineage_freeze_data. У старых объектов пересчитываются exec_count и rowsCount, новые объекты добавляются.
| Тип результата | Описание |
|---|---|
integer | Количество обновленных записей |
psql_data_lineage_restore_freezed – отменяет заморозку: удаляет файл dl_freezed_stat.stat данных и возвращает сбор статистики в реальном времени.
| Тип результата | Описание |
|---|---|
boolean | Успех выполнения |
psql_data_lineage_reset – неконсистентно очищает общую память от накопленных статистических данных и удаляет файлы, хранящие информацию о потоках данных.
| Тип результата | Описание |
|---|---|
boolean | Успех выполнения |
psql_data_lineage_clean(keep_interval TEXT) – неконсистентно удаляет данные о потоках, старше заданного keep_interval.
| Тип результата | Описание |
|---|---|
integer | Количество удаленных записей |
* – все возможные типы отношений из pg_class (однако на практике индексы не участвуют в потоках данных, поэтому не могут попасть в качестве значения в это поле):
r– обычная таблица;i– индекс (index);S– последовательность (sequence);v– представление (view);m– материализованное представление (materialized view);c– составной тип (composite);t– таблица TOAST;f– сторонняя таблица (foreign).
Дополнительно введенные типы:
T– временная таблица;P– параметр;C– константа;F– функция.
Представления
psql_dl_stats_with_meta показывает статистику метаданных об объектах, участвующих в данном потоке данных. psql_dl_stats_with_meta состоит из следующих столбцов:
Имя столбца | Тип | Описание |
|---|---|---|
|
| Идентификатор. Через этот идентификатор происходит связывание со всеми остальными предоставляемыми данными |
|
| Идентификатор запроса, обработанного Data Lineage (не совпадает с |
|
| Идентификатор запроса, обработанного Data Lineage (не совпадает с Запросы могут иметь вложенный характер. Это поле позволяет отследить цепочку запросов, вызывавших друг друга. Для порождающего запроса в качестве родительского указывается он сам |
|
| Идентификатор запроса в рамках БД |
|
| Источник происхождения атрибута |
|
| Результат преобразования атрибута |
|
| Время начала первого исполнения запроса |
|
| Время начала последнего исполнения запроса |
|
| Текст последнего исполненного плана |
|
| Генерализованный текст запроса |
|
| Длительность последнего исполнения запроса |
|
| Количество успешных исполнений запроса с начала сбора статистики |
|
| Суммарное количество строк, обработанных запросом с начала сбора статистики |
psql_dl_attrstats_with_meta показывает статистику метаданных об атрибутах объектов, участвующих в данном потоке данных, и состоит из следующих столбцов:
Имя столбца | Тип | Описание |
|---|---|---|
|
| Полное имя атрибута в рамках данного потока данных |
|
| Источник происхождения атрибута |
|
| Результат преобразования атрибута |
|
| Текст SQL-запроса, вызвавшего изменение |
Ограничения
В одной транзакции можно использовать не более 255 уникальных ID-запросов для DDL-запросов, которые имеют одинаковый инициализирующий запрос. Далее ID-запросы могут повторяться.
Установка
Для оптимизации выгрузки данных DL рекомендуется создать отдельную обслуживающую БД в которой производится чтение данных DL в структуру обработки информации на усмотрение Администратора DL и дальнейшее использование этих данных для выгрузки администраторами DL. Данная рекомендация не является обязательной, и установка может быть выполнена в любую из существующих БД.
Для включения и настройки функциональности выполните шаги:
-
Добавьте к параметру
shared_preload_librariesзначениеpsql_data_lineage:ALTER SYSTEM SET shared_preload_libraries='psql_data_lineage'; -
Перезагрузите СУБД.
-
Выставьте параметр конфигурации
psql_data_lineage.enableв БДpostgresв значениеon:ALTER SYSTEM SET psql_data_lineage.enable='on'; -
Создайте расширение:
CREATE EXTENSION IF NOT EXISTS psql_data_lineage;
Отключение расширения
Для отключения функциональности:
-
Удалите расширение:
DROP EXTENSION psql_data_lineage; -
Сбросьте значение параметра
psql_data_lineage.enable(верните значениеoff):ALTER SYSTEM RESET psql_data_lineage.enable; -
Уберите значение
psql_data_linenageизshared_preload_librariesв конфигурационном файлеpostgresql.confили используя командуALTER SYSTEMс указанием списка расширений с исключеннымpsql_data_linenage:ALTER SYSTEM SET shared_preload_libraries='список расширений'; -
Перезагрузите СУБД.
-
Удалите каталог, заданный параметром
psql_data_lineage.stat_directory:rm -rf {каталог psql_data_lineage.stat_directory}
Настройка
-
Настройте список БД, для которых будет собираться статистика. Для этого реализованы параметры
psql_data_lineage.exclude_databasesиpsql_data_lineage.include_databases. По умолчанию статистика собирается для всех БД, так как по умолчанию в значении параметров пустая строка. Изменение любого из параметров требует перезагрузки СУБД.Примеры использования:
ALTER SYSTEM SET psql_data_lineage.exclude_databases='dl_1,dl_2,dl_3'– сбор статистики по всем существующим БД в сущности СУБД кромеdl_1,dl_2,dl_3;ALTER SYSTEM SET psql_data_lineage.include_databases='dl_3,dl_4,dl_5'– сбор статистики только в БДdl_3,dl_4,dl_5.
Указание
dl_3для обоих параметров возможно, но в таком случае статистика будет собираться только в БДdl_4,dl_5. -
Перезагрузите СУБД для применения параметров.
-
Настройте путь к месту сохранения файлов со статистикой:
-
Пример использования при сохранении данных вне
$PGDATA(рекомендовано):-
Создайте директорию в необходимом месте:
mkdir -p /opt/example_info/dl_stat_new -
Переопределите параметр
psql_data_lineage.stat_directory:ALTER SYSTEM SET psql_data_lineage.stat_directory='/opt/example_info/dl_stat_new'; -
Перезагрузите СУБД для применения параметра. После применения параметра путь сохранения файлов статистики будет:
/opt/example_info/dl_stat_new.
-
-
Пример использования при сохранении в пределах
$PGDATA:-
Создайте директорию в
$PGDATA:mkdir -p $PGDATA/new_info/dl_stat_example -
Переопределите параметр
psql_data_lineage.stat_directory:ALTER SYSTEM SET psql_data_lineage.stat_directory='new_info/dl_stat_example'; -
Перезагрузите СУБД для применения параметра. После применения параметра путь сохранения файлов статистики будет:
$PGDATA/new_info/dl_stat_example.
-
-
Использование расширения
С примерами использования расширения можно ознакомиться в подразделе «Сценарии использования» раздела «Механизм сбора информации о движении данных (Data Lineage)» документа «Руководство администратора».