SAP HANA DB에는 Column Table 저장하는 아키텍처로 Main Storage Delta Storage라는 가지 저장소 개념을 사용하고 있습니다. Main Storage에는 압축된 데이터가 들어가게 되는데, 그럼 Write Operation 발생하면 그때그때 다시 정렬하고 압축하고 해야할까요? 이런 문제를 해결하기 위해 HANA DB Delta Storage 사용합니다. 이제부터 Delta 영역과 Delta Merge 대해 알아보도록 하죠.

 

그림 출처: https://launchpad.support.sap.com/#/notes/2057046

 

우선 위의 그림을 보면 이해가 편하실 겁니다.

Write Operation Delta Storage라는 영역에서 이루어지며, Read Operation Main Storage Delta Storage에서 둘다 이루어집니다. 이렇게 Delta Storage 쌓이던 변경 사항은 Delta Merge라는 작업에 의해 Main Storage 합쳐지게 됩니다.

 

Delta Merge 작업에 대해서는 아래 그림을 보실까요?

그림 출처: https://launchpad.support.sap.com/#/notes/2057046

 

Delta Storage Main Storage 합쳐지는 과정(Delta merge) 중에는 당연히 Delta Storage 변경사항을 없겠죠? 그렇기 때문에 SAP HANA DB에서는 Delta Storage Delta1, Delta2 개념적으로 나누어 놨습니다. Delta1 Main 합쳐지는 동안에는 변경사항을 Delta2 쓰게 하는 거죠. Main 있던 데이터들도 Main2라는 것을 만들어서 아예 새로운 영역을 만들어냅니다. 과정은 위의 가운데 그림을 보시면 이해가 편할 겁니다. 눈에 봐도 메모리 자원을 많이 사용하겠죠? 실제로도 Delta Merge 이루어지는 동안에는 메모리를 많이 사용합니다. Delta Storage 내의 테이블 크기의 거의 2배의 공간을 요구한다고 합니다. 또한 테이블 압축작업을 수행해야 하기 때문에 CPU 사용률도 높아지죠.

 

그럼 Delta Merge 수행해야 하는지 안하는지는 누가 판단할까요?

이것을 판단하는 것은 Mergedog이라는 프로세스가 담당합니다. Mergedog 주기적으로 Column Table 확인해서 Delta Merge 작업을 수행할 말지 판단합니다.

Mergedog 기능은 특별한 경우를 제외하고는 켜져 이어야 합니다. 기능이 켜져 있는지 확인하는 방법은 다음 파라미터를 확인하면 됩니다.

indexserver.ini -> [mergedog] -> active

Delta Merge Mergedog 의해 자동으로 수행되기도 하지만, 수동으로 수행할 수도 있습니다. 아래 쿼리를 수행하시면 됩니다.

MERGE DELTA OF "<table_name>" [FORCE REBUILD]

SAP에서는 강제 Delta Merge 수행은 하지 않을 것을 권고합니다. Delta Merge CPU, Memory 자원을 많이 사용하고, 또한 Mergedog 알아서 상황을 판단하고 수행하기 때문이죠. 그냥 이런 있구나~ 라는 것만 알아두세요 ㅎㅎ

 

Delta Storage 저장되는 데이터는 디스크에 저장되지 않고 메모리에만 존재하게 됩니다. Delta Merge 수행되고 나서야 디스크에 들어가게 되지요. 그리고 Delta Storage 있던 Delta log들도 삭제됩니다. Delta log 변경사항에 대한 로그로, 오라클의 Redo log 같다고 보시면 됩니다.

 

Delta log Delta Storage 영역 외에 디스크에도 쓰이기 때문에, Power outage 발생하더라도 변경사항을 유지할 있습니다.

 

출처:

https://www.sap.com/documents/2012/05/9ec46a16-547c-0010-82c7-eda71af511fa.html

http://hanadba.blogspot.com/2016/01/delta-merge-in-hana.html

SAP Note 2057046 - FAQ: SAP HANA Delta Merges (https://launchpad.support.sap.com/#/notes/2057046)

https://archive.sap.com/discussions/thread/1667299

+ Recent posts