SQL Execution Work Area 크기 산정
Tibero DB SQL Execution Work Area 크기 산정 방법에 대해 설명합니다.
개요
다른 워킹 프로세스 및 워킹 스레드와 공유되지 않은 독립적인 메모리 공간으로 세부 영역은 다음과 같습니다.
세션 정보 영역 로그온 및 세션 관련 정보
커서 정보 영역 (SQL영역) SQL 문 처리할 때 필요한 메모리 공간
SQL Work Area (SQL 작업 영역) Sort, hash-Join, Bitmap 생성 및 Merge(병합) 작업할 때 사용되는 메모리 영역
아래는 관련 파라미터에 관한 설명입니다.
구분
설명
총 SQL Execution Work Area
산정방법
MEMORY_TARGET - TOTAL_SHM_SIZE
MEMORY_TARGET
총 메모리 사용량이다.
TOTAL_SHM_SIZE
총 공유 메모리 사용량이다.
_OP_MEM_MAX_SIZE
하나의 operation(정렬, 조인, 분석)에서 사용할 최대 메모리 사용량이다. (Tibero 7 기준)
_OP_MEM_PX_MAX_SIZE
하나의 operation(정렬, 조인, 분석)이 parallel로 수행될 때 slave들이 사용 할 수 있는 총 최대 메모리 사용량이다. (Tibero 7 기준)
EX_MEMORY_OPERA TION_LIMIT
하나의 operation에서 사용할 최대 메모리 사용량을 계산한다. (단위: MB) parallel 쿼리에서 slave들도 위의 최대 메모리 사용량을 쓰려고 하기 때문에 과다 메모리를 사용하려고 하고 memory tunner에 의해 나중에 수행되는 slave 의 경우 메모리 사용에 불이익을 받게 될 수도 있다.
고려사항
SQL Execution Work Area 크기 산정 시 고려사항
일반적인 온라인 업무 환경(OLTP)
온라인 업무에서는 대량의 데이터를 읽어서 정렬하거나 분석하는 쿼리보다는 특정 값을 조회 및 수정 하기 위해 index를 이용하는 쿼리가 대부분입니다. 이런 경우에는 SQL에서 독립적으로 사용하는 SQL Execution Work Area의 사용량이 많지 않고 오히려 Index를 이용한 Table Random Access IO를 줄이기 위해 Buffer Cache 영역을 대부분 사용하는 것이 바람직합니다.
데이터 분석 업무 환경(OLAP)
대용량의 데이터를 Full Table Scan으로 읽어들여 정렬, 조인 및 분석을 수행하는 쿼리가 대부분이고 Parallel Execution을 이용하는 환경입니다. 읽어들이는 데이터의 크기가 물리적인 메모리 크기에 담을 수 없을 정도의 크기인 경우가 많기 때문에 효율적인 Buffer Cache 이용을 기대할 수가 없는 상황이므로 공유 메모리 영역에서 Buffer Cache의 크기를 줄이고 독립적으로 사용 가능한 SQL Execution Work Area 메모리 크기에 따라 성능이 크게 좌우되는 정렬, 조인 및 분석 작업을 위해 대부분의 물리 메모리 를 SQL Work Area에 할당하는 것이 효율적입니다.
용량 산정
다음은 SQL Execution Work Area 크기 산정하는 방법입니다.
항목
설명
일반적인 온라인 업무 환경 (OLTP)
SQL Execution Work Area (SQL 실행 작업 영역) : 20%
TOTAL_SHM_SIZE : MEMORY_TARGET 값의 80% (OS 및 다른 서비스 사용 영역 제외) EX_MEMORY_OPERATION_LIMIT : 5000
_OP_MEM_MAX_SIZE (Tibero 7 기준 (IPARAM(MEMORY_TARGET) - IPARAM(TOTAL_SHM_SIZE)) * 0.05
_OP_MEM_MAX_SIZE (Tibero7 기준) (IPARAM(MEMORY_TARGET) - IPARAM(TOTAL_SHM_SIZE)) * 0.3
데이터 분석 업무 환경
(OLAP)
SQL Execution Work Area (SQL 실행 작업 영역) : 80% (가용 메모리 한계 내에서 최적의 작업 영역을 지정하여 디스크 I/O를 줄이고 SQL의 수행 속도를 높일 수 있도록 조절하기 위해서)
TOTAL_SHM_SIZE : MEMORY_TARGET 값의 20%
EX_MEMORY_OPERATION_LIMIT : 20000 (Tibero 7 기준 Deprecated)
_OP_MEM_MAX_SIZE(Tibero 7 기준) (IPARAM(MEMORY_TARGET) - IPARAM(TOTAL_SHM_SIZE)) * 0.2
_OP_MEM_MAX_SIZE(Tibero 7 기준) (IPARAM(MEMORY_TARGET) - IPARAM(TOTAL_SHM_SIZE)) * 0.3
총 SQL Execution
Work Area
최대 MEMORY_TARGET - TOTAL_SHM_SIZE만큼 사용이 가능하다.
Last updated