Skip to content

Профилирование (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                       # Включить профилирование
    ...