Профилирование (Profiling)
Механизм профилирования работает за счет выполнения запросов к БД, вследствие чего время работы инджестора при включенном профилировании может увеличиться. При профилировании, выполняются запросы, которые могут приводить к full table scan. Минимально выполняется по 3 запроса на каждую таблицу.
Важно. Если для источника включено профилирование, рекомендуется планировать регулярный запуск инджестора на время, в которое СУБД нагружена минимально.
Настройки, предварительные условия, разрешения
Для обеспечения возможности профилирования у учетной записи, под которой работает инджестор должен быть доступ на чтение к таблицам, которые предполагается профилировать.
Профилирование работает для таблиц (table). Представления (view) не профилируются.
Скорость профилирования
-
Если источник содержит таблицы с количеством записей до 1 млн (в каждой), то проблем с профилированием не ожидается;
-
Если источник содержит таблицы размером 50 млн записей (в каждой) и больше, то есть высокая вероятность, что профилирование и инджестор в целом могут не отработать корректно, при этом создав нагрузку на СУБД;
-
Если у вас есть необходимость профилирования большого источника/таблицы, существует возможность более тонкой настройки инджестора (по количеству записей, столбцов и т.д.). Для возможности проведения такой настройки у учетной записи, под которой инджестор соединяется с СУБД должны быть права на создание временных таблиц.
Статистка профилирования для базы данных
В этом разделе приведена статистика по запуску профилирования. Эта информация может помочь в понимании потенциальной нагрузки, которую инджестор может создать на СУБД при запуске профилирования.
Выделенные ресурсы - 4 vCPU/8GB RAM
Количество записей в таблице | Размер таблицы | Время профилирования |
---|---|---|
11,3 млн | 4509 MB | 262 сек |
1,4 млн | 1004 MB | 113 сек |
2,3 млн | 908 MB | 81 сек |
3,2 млн | 991 MB | 51 сек |
365 тыс | 101 MB | 6 сек |
27 тыс | 10 MB | 2 сек |
На текущий момент профилирование поддерживают инджесторы для следующих технологий СУБД:
- PostgreSQL,
- Greenplum,
- MySQL,
- MariaDB,
- MSSQL,
- Hive,
- Oracle,
- Clickhouse,
- Elasticsearch (только подсчет количества строк и столбцов).
Ознакомиться с результатами профилирования в интерфейсе Каталога данных можно на странице статистики.
Пример рецепта для профилирования
source:
type: ...
config:
...
profiling: # Раздел профилирования
enabled: true # Включить профилирование
include_field_distinct_count: true # Включить подсчет уникальных значений
include_field_null_count: true # Включить подсчет null
profile_pattern: # Необязательный параметр. Regex паттерны для разрешения/исключения таблиц для профилирования. По умолчанию совпадает с table_pattern. Заполняется так же, как table_pattern.
allow: []
deny: []
...
Прочитать про паттерны allow и deny можно здесь, также можно знакомиться с трансформерами, которые могут изменять метаданные из источника при их загрузке.
Профилирование для технологии ElasticSearch
ElasticSearch поддерживает ограниченное профилирование. На данный момент доступен подсчет только количества строк и столбцов. Рецепт может выглядеть следующим образом:
source:
type: ...
config:
...
profiling: # Раздел профилирования
enabled: true # Включить профилирование
...