[DB2] Join Method, Sort 실행계획 operation, memory
# DB2에서 Join Method :
SELECT /*+ NLJOIN */ A.*, B.*
FROM 테이블_A A
JOIN 테이블_B B ON A.ID = B.ID;
SELECT /*+ MJOIN */ A.*, B.*
FROM 테이블_A A
JOIN 테이블_B B ON A.ID = B.ID;
SELECT /*+ HSJOIN */ A.*, B.*
FROM 테이블_A A
JOIN 테이블_B B ON A.ID = B.ID;
DB2에서 세션별로 sort 연산에 사용되는 메모리 : 정렬 버퍼 메모리(Sort Memory)
각 세션은 독립적인 sort 메모리를 할당받아 정렬 작업을 수행합니다. 세션이 끝나면 메모리도 해제됩니다.
메모리 크기는 기본적으로 시스템에 의해 설정되지만, DB 관리자가 이를 조정할 수 있습니다.
DB2에서 세션별 sort 메모리 크기는 두 가지 주요 파라미터로 제어할 수 있습니다
SORTHEAP : 정렬 작업에 할당되는 메모리의 크기를 제어하는 파라미터
각 세션에 대해 허용되는 최대 정렬 메모리 크기를 결정합니다.
db2 update db cfg for <database_name> using SORTHEAP <크기>
SHEAPTHRES_SHR : 시스템 전체에서 사용할 수 있는 정렬 메모리의 총량을 설정하는 파라미터
여러 세션에서 동시에 정렬 작업이 발생할 경우 이 파라미터에 의해 전체 메모리 사용량이 제한됩니다.
db2 update db cfg for <database_name> using SHEAPTHRES_SHR <크기>
정렬 작업 중 메모리가 부족해서 성능 저하가 발생하면, SORTHEAP 값을 늘리거나 SHEAPTHRES_SHR 값을 적절히 조정해 더 많은 메모리를 할당할 수 있습니다.
AUTOMATIC으로 설정하여 DB2가 자동으로 적절한 메모리 크기를 조정하도록 할 수도 있습니다.
db2 update db cfg for <database_name> using SORTHEAP AUTOMATIC
db2 update db cfg for <database_name> using SHEAPTHRES_SHR AUTOMATIC
#DB2에서 sort, hash가 수행될때 실행계획에 나타나는 operation :
SORT : 기본적인 정렬 작업
SORT (ORDER) : 특정 컬럼을 기준으로 오름차순 또는 내림차순으로 정렬하는 작업
SORT (GROUPBY) : GROUP BY 절을 사용하여 데이터를 그룹화하면서 정렬하는 작업 .
SORT (UNIQUE) : 중복 값을 제거하는 DISTINCT 연산을 수행하는 정렬 작업
HASH JOIN : 해시 알고리즘을 사용하여 두 테이블 간의 조인을 수행
HASH (GROUPBY) : GROUP BY 절을 사용할 때 해시 테이블을 통해 데이터를 그룹화하는 작업
HASH (DISTINCT) : 중복을 제거할 때 해시 알고리즘을 사용하는 경우