SAP BC/HANA

# [HANA] SAP HANA Delta Merge (델타 머지)

leehi0110 2024. 11. 27. 08:00
반응형

0. Delta Merge를 알기 위한 사전 지식

 

# [Database] HANA DB vs Oracle DB

1. SAP HANA DB 란?SAP HANA DB란 SAP에서 개발한 인메모리 기반의 데이터베이스로, 데이터를 메모리에 저장하여 매우 빠른 데이터 액세스와 처리 속도를 제공한다.이를 통해 실시간 데이터 분석과 트랜

leehi0110.tistory.com

1. Delta Merge 란?

  • SAP HANA는 데이터를 Column Store 형식으로 저장하며, 이를 위해 Main 영역과 Delta 영역을 가진다.
  • Main 영역은 주로 읽기 작업을 위해 최적화된 영역으로, 데이터가 압축된 형태이기 때문에 읽기 성능이 뛰어나다.
  • 반면, Delta 영역은 쓰기 작업을 위해 최적화된 영역으로, 데이터가 삽입, 수정, 삭제 등과 같은 작업을 수행하기 위해 사용된다.
  • Delta Merge는 이 두 영역을 병합하는 과정으로, 이를 통해 성능 최적화, 메모리 관리, 데이터 일관성과 같은 이점을 얻을 수 있다.

2. Delta Merge Process ( 델타 머지 순서 )

  • Delta Merge가 일어나기 전, 모든 쓰기는 Delta 1 영역에서 수행되며 읽기는 Main 1과 Delta 1 모두에서 가능하다.

  • Delta Merge가 실행되면, Delta 영역은 Delta 1 (Old Delta)와 Delta 2 (New Delta)로 나눠지게 되며, 아직 커밋 되지 않은 변경은 모두 Delta 2로 복사된다.
  • 이후, 모든 쓰기는 Delta 2에서 수행되며, 읽기의 경우 Main 1, Delta 1, Delta 2에서 모두 가능하다.
  • Main 1과 커밋된 변경분을 가지고 있는 Delta 1이 병합되어 Main 2라는 새로운 영역에 저장되는데 이를 델타머지 (Delta Merge)라 한다.

  • Delta Merge 이후, Main 1과 Delta 1은 삭제되고 Main 2의 데이터는 압축이 진행되며, 압축이 완료되면 디스크에 저장된다.

3. Delta Merge as expensive operation

  • Delta Merge 작업은 많은 양의 데이터를 읽고 병합하기 위해 많은 I/O를 발생 시킨다.
  • 또한, Delta Merge는 메모리 내에서 수행되기 때문에 병합 과정에서 Main 혹은 Delta 영역을 1, 2로 나누는 순간 많은 메모리를 사용하게 된다.
  • 데이터 병합, 압축, 정렬 등의 작업은 CPU 사용률을 높이고 이는 어플리케이션의 성능에 영향을 줄 수 있다.

4. Merge Motivations ( Merge 작업 수행 조건 )

  1. Auto Merge
    • 가장 일반적인 방식은 Mergedog 이라 불리는 프로세스가 주기적으로 테이블을 확인하여 수행하는 "auto merge" 이다.
    • Mergedog은 delta storage size, 가용 메모리, 시간 등의 특정 기준을 기반으로 병합이 필요한지 아닌지 결정한다.
  2. Smart Merge
    • SAP HANA에서 제공하는 기능으로, 병합에 대해 보다 직접적인 제어가 필요한 경우 사용할 수 있다.
    • 예를 들어, 대량의 테이블을 메모리에 로드하는 동안 델타 머지가 발생할 경우 시스템이나 사용자에게 영향을 줄 수 있다.
      이를 방지하기 위해 어플리케이션은 자동병합을 비활성화 하고 테이블 로드가 완료되면 병햡 해도 된다는 hint를 보낸다.
    • 데이터베이스는 hint를 확인 한 뒤, 기준에 따라 병합을 실행하거나 실행하지 않는데 이와 같은 방식을 "Smart Merge"라 한다.
  3. Hard and Forced Merge
    • 사용자가 SQL을 이용해 수동으로 Merge를 수행할 수 있는데, 이를 "Hard Merge" 그리고 "Forced Merge"라 한다.
    • Hard Merge의 경우, 합병을 수행하기 위한 충분한 리소스가 있거나, 곧 충분한 리소스가 생길 것이라 판단되는 경우 즉시 병합을 수행한다
MERGE DELTA OF "<table name>"
        • 만약, 리소스와 상관없이 병합을 진행하길 원한다면, 파라미터를 추가하여 수행 할 수 있고, 이를 "Forced Merge" 라고 한다.
        • 해당 병합은 시스템 부하가 발생하고 있는 상황에서, 작은 테이블의 병합이 필요한 경우나, 시스템에 부정적인 영향을 주는 Missing된 병합을 추가로 빠르게 수행할 때 유용하다.
Merge DELTA OF "<table name>" WITH PARAMETERS ('FORCED_MERGE' = 'ON')
  1. Critical Merge
    • 시스템 안정을 위해 Critical merge가 수행될 수 있다.
    • 예를 들어, auto merge가 자동으로 수행되지 않으며 smart merge hint가 시스템에 보내지지 않는 등 델타 영역이 너무 커지는 경우 시스템이 임계 조건에 도달하면 머지 작업을 트리거한다.

 

Ref.

반응형

'SAP BC > HANA' 카테고리의 다른 글

# [HANA] SAP HANA System Replication ( HSR )  (0) 2024.03.26
# [HANA] Database User  (0) 2024.03.17
# [HANA] HANA DB  (0) 2023.12.13
# [HANA] SAP HANA STUDIO 설치  (0) 2023.08.22
# [HANA] HANA version  (0) 2023.02.27