이번 포스팅에서는 Statement Memory 관리 방법에 대해 알아보겠습니다.

 

1. Tracking 설정

우선 메모리의 워크로드 데이터를 얻기 위해서는 Tracking 설정을 해야 합니다.

gloal_ini 밑에 있는 enable_tracking, memory_tracking 파라미터를 on으로 설정합니다. (기본값 : off)

 

2. 메모리 워크로드 관련 파라미터

total_statement_memory_limit

Statements들이 사용할 있는 메모리 한계입니다. 개의 Statement 아닌 시스템에서 실행되는 Statements 전체에 해당되는 것이죠. (기본값 : 없음)

 

statement_memory_limit

Statement 최대로 할당 가능한 메모리입니다.

GB 단위이며, 기본값은 0(무제한)입니다.

제한에 걸리게 되면 Dump 발생시키면서 Statement 종료됩니다.

특정 사용자에게 적용 방법: ALTER USER <사용자명> SET PARAMETER STATEMENT MEMORY LIMIT = <gb>

사용자에게 적용한 해제 방법: ALTER USER <사용자명> CLEAR PARAMETER STATEMENT MEMORY LIMIT

사용자에게 적용한 값이 글로벌로 적용한 값보다 우선하여 적용됩니다. 사용자에게 적용하지 않았다면 글로벌 값이 적용되구요.

 

statement_memory_limit_threshold

파라미터는 위의 statement_memory_limit 적용되기 전의 조건을 설정하는 것입니다.

, 현재 HANA DB에서 사용하고 있는 메모리가 Global Allocation Limit % 넘지 않으면 statement_memory_limit 적용시키지 않을거라는 설정하는 거지요.

statement_memory_limit 유도리있게 사용하려는 것이죠.

단위는 %이며, 기본값은 0입니다. 기본값이 0이라는 것은 statement_memory_limit 설정했을 경우, 무조건 값을 초과하게 되면 해당 Statement Cancel시킨다는 것을 의미하죠.

 

, 예를 들어봅시다!

물리 메모리가 128GB, Global Allocation Limit 115GB, statement_memory_limit 1GB, statement_memory_limit_threshold 60%라고 가정합시다.

그럼 statement_memory_limit_threshold 115*0.6=69.0 GB이겠죠?

 

만약에 현재 HANA DB에서 사용하고 있는 메모리가 50GB라고 가정하고,
2GB
소비하는 Statement 들어왔을 , Statement 동작하게 될까요?

, 동작합니다.

아무리 statement_memory_limit 값이 1GB 설정되어 있다고 하더라도, 현재 사용하고 있는 메모리(50GB) statement_memory_limit_threshold(69GB) 초과하지 않기 때문에 문제가 안되는 거지요.

 

만약 현재 HANA DB에서 메모리를 70GB 사용하고 있다고 하면 어떨까요?

2GB 소비하는 Statement Cancelled됩니다.

 

이렇게 Statement Memory Limit Statement Memory Limit Threshold 워크로드를 관리하는 방법에 대해 간략히 알아보았습니다.

 

참고자료:

https://help.sap.com/viewer/6b94445c94ae495c83a19646e7c3fd56/2.0.03/en-US/330e5550b09d4f0f8b6cceb14a64cd22.html

 

 

+ Recent posts