Меню

Дельта-слияние (Delta Merge) в HANA (ч.1)

В статье дается объяснение, что такое SAP HANA Delta Merge для колончатых таблиц и как работает слияние данных.

Введение

Внедрение SAP HANA требует понимания процедуры обработки изменения данных в колончатых таблицах HANA, что позволяет гибко оперировать настройками и достигать требуемой производительности системы.

Колончатое хранение данных

Колончатые таблицы включают индексы двух типов: для всех столбцов существует основной индекс (Main index) и дельта индекс (Delta index). В памяти HANA для каждой колончатой таблицы одновременно "живут" два объекта: дельта хранилище (Delta storage), оптимизированное для операций записи и основное хранилище (Main storage), оптимизированное для операций чтения. Использование дельта-таблиц решает проблемы производительности при загрузке непосредственно в сжатые столбцы.

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

Дельта-слияние (Delta Merge)

Модель дельта-сляния данных:

Шаг 1: Слияние

Состояние перед операцией слияния (Before Delta Merge):

  • Все операции записи выполняются в хранилище Delta1
  • Все операции чтения читаются из хранилищ Main1 и Delta1.

Во время операции слияния (During Merge):

  • Во время выполнения операции слияния все изменения попадают во второе дельта-хранилище, Delta2.
  • Операции чтения считываются из исходного основного хранилища Main1 и из обоих хранилищ delta, Delta1 и Delta2.
  • Незавершенные изменения в Delta1 копируются в Delta2.
  • Содержимое Main1 и подтвержденные записи в Delta1 объединяются в новое основное хранилище Main2.

После операции слияния (After Merge):

  • После объединения хранилища Main1 и Delta1 удаляются.

Шаг 2: Оптимизация

После успешного завершения слияния ядро вычисляет оптимизированные параметры сжатия. Движок HANA немедленно перезагружает любой столбец в память, если в ходе слияния для него что-то изменилось.

Важным моментом, на который необходимо обратить внимание, является слияние данных для партицированных таблиц. Перед перепартицированием таблиц обязательно выполняется дельта-слияние. Нужно это учитывать чтобы не допустить исчерпания памяти во время объединения больших таблиц.

Типы дельта-слияний

Автоматическое слияние (Auto Merge) (по умолчанию) - используется системный процесс с именем «Mergedog», который периодически проверяет колончатые таблицы, для каждой отдельной таблицы (или отдельного раздела разделенного хранилища) определяется, должно ли слияние выполняться на основе настроенных критериев. Рекомендуется отключать автоматическое объединение при загрузке больших таблиц и включить его снова после загрузки больших объемов данных в таблицы.

Гибкое слияние (Smart merge) - позволяет управлять слиянием с помощью команды SQL. При получении команды, HANA определяет, должно ли быть выполнено дельта-слияние, оценивая

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти