델타 병합 (Delta Merge) 작업이란?
쓰기 작업은 델타 스토리지영역에서만 수행이 됩니다.
데이터를 메모리 사용 및 읽기 성능 측면에서 최적화된 형식으로 관리를 하려면 데이터를 주 저장소로 이동을 해야 합니다.
이 작업은 델타 병합 작업에 의해서 수행되게 됩니다.
1. 병합 작업 전에 모든 쓰기 작업은 Delta1 저장소로 이동하고 모든 읽기 작업은 Main1 및 Delta1 저장소에서 읽습니다.
2. 병합 작업이 실행되는 동안 다음과 같은 상황이 발생합니다.
a. 모든 쓰기 작업은 두 번째 델타 스토리지인 Delta2로 이동합니다.
b. 읽기 작업은 원래 주 저장소인 Main1과 델타 저장소인 Delta1 및 Delta2에서 읽습니다.
c. Delta1 의 커밋되지 않은 변경 사항은 Delta2에 복사됩니다.
d. Main1의 내용과 Delta1의 커밋된 항목은 새로운 메인 스토리지인 Main2에 병합됩니다.
3. 병합 작업이 완료되면 다음과 같은 상황이 발생합니다.
a. Main1 및 Delta1 스토리지가 삭제됩니다.
b. 새 주 저장소(Main2)의 압축이 되고 최적화됩니다. 필요한 경우 이 작업은 행의 순서를 변경하고 압축 매개 변수도 조정을 합니다. 압축이 변경된 경우 열은 즉시 메모리로 다시 로드 됩니다.
c. 전체 기본 저장소의 내용은 디스크에 유지됩니다.
주의 사항
델타 병합 작업에 대한 최소 메모리 요구 사항에는 주 저장소의 현재 크기와 향후 기본 저장소 크기 및 델타 저장소의 현재 크기, 일부 추가 메모리가 포함됩니다.
델타 병합 작업은 다음과 같은 주요 이유로 비용이 많이 들 수 있습니다.
- 테이블의 모든 열의 전체 기본 저장소가 메모리에 다시 기록됩니다. 이것은 일부 CPU 자원을 소비하고 적어도 일시적으로 메인 스토리지에 필요한 메모리를 복제합니다. ( Main1 과 Main2는 동시에 존재합니다. )
- 전체 기본 저장소는 비교적 적은 수의 레코드만 변경된 경우에도 디스크에 유지됩니다. 이렇게 하면 디스크 I/O 로드가 발생합니다.
성능에 대한 부분을 다음 전략으로 완화 할 수 있습니다.
- 메모리 전용 병합 실행
메모리 전용 병합은 메모리 내 구조에만 영향을 미치며 데이터를 유지하지 않습니다.
- 테이블 분할
델타 병합의 성능은 기본 저장소의 크기에 따라 다릅니다. 이 크기는 테이블을 여러 파티션으로 분할하여 줄일 수 있으며, 각 파티션에는 자체 기본 및 델타 저장소가 있습니다. 델타 병햡 작업은 파티션 수준에서 수행되며 실제로 필요한 파티션에서만 수행이 됩니다.
즉, 병합하고 유지해야 하는 데이터가 줄어듭니다.
델타 병합 (Delta Merge) 진행 중 메모리 모니터링
Main Storage 메모리가 103,790,066 KB 상태입니다.
대량 삭제 작업을 진행한 상태이고 현재 Auto Merge로 되어 있기 때문에 기준값에 의해 델타 병합(Delta Merge)가 수행됩니다.
델타 병합이 진행이 되게 되면, Main Storage 가 103,790,066 KB에서 지속적으로 증가하여 약 2배 이상으로 증가하게 됩니다.
위의 주의 사항에서와 같이 "주 저장소의 현재 크기" + "향후 기본 저장소의 크기" + "델타 저장소의 현재 크기 " +" 일부 추가 메모리" 가 최종적으로 필요한 메모리 크기입니다.
항상 대량의 데이터를 변경할 경우 이를 고려하여 델타 병합을 진행해야 합니다.
'HANA > System Administration' 카테고리의 다른 글
SAP HANA 테이블 파티셔닝 (0) | 2022.09.28 |
---|---|
Remove Service in MultiTenant DB ( HANA DB 불일치 Inconsistencies ) (0) | 2022.06.23 |
SAP HANA DB Log Volume Full (0) | 2022.06.20 |
SAP HANA System Configureation Files ( ini files ) (0) | 2022.04.28 |