# SQL Server에서 Join Method :
SELECT /*+ LOOP */ A.*, B.*
FROM 테이블_A A
JOIN 테이블_B B ON A.ID = B.ID;
SELECT /*+ MERGE */ A.*, B.*
FROM 테이블_A A
JOIN 테이블_B B ON A.ID = B.ID;
SELECT /*+ HASH */ A.*, B.*
FROM 테이블_A A
JOIN 테이블_B B ON A.ID = B.ID;
# Adaptive Join (적응형 조인) : SQL Server 2017부터 도입된 방식으로, 실행 중인 쿼리의 런타임 조건에 따라 Nested Loop Join 또는 Hash Join을 동적으로 선택할 수 있는 방식
# SQL Server에서 세션별로 정렬 연산에 사용되는 메모리 : Sort Memory
메모리가 부족하면 데이터를 디스크로 스와핑하여 성능이 저하될 수 있습니다
쿼리 플랜에서 필요한 메모리가 계산되며, 쿼리 실행 중에 SQL Server의 메모리 관리자에 의해 관리됩니다.
SQL Server는 쿼리 실행 계획을 생성할 때 필요한 메모리를 예측하고, 정렬이나 해시 연산 등의 작업에 필요한 메모리를 할당합니다.
SQL Server에서는 세션별 메모리 사용량을 직접 설정할 수 없고, 서버 설정을 통해 간접적으로 제어할 수 있습니다.
max server memory : QL Server가 전체적으로 사용할 수 있는 최대 메모리 크기를 설정
SQL Server 인스턴스가 사용하는 모든 메모리(버퍼 풀, 쿼리 메모리 등)를 제한합니다.
EXEC sp_configure 'max server memory', <메모리_MB>;
RECONFIGURE;
min server memory : SQL Server가 사용할 수 있는 최소 메모리 크기를 설정
SQL Server가 인스턴스 시작 시 확보해야 하는 최소 메모리 양을 정의합니다.
EXEC sp_configure 'min server memory', <메모리_MB>;
RECONFIGURE;
동시 실행 계획 수나 쿼리의 복잡성에 따라 쿼리 메모리 사용이 달라집니다.
쿼리 힌트를 사용하여 메모리 요구량을 제어할 수 있습니다. OPTION (MAX_GRANT_PERCENT) 힌트를 사용하여 특정 쿼리에서 메모리 할당량을 제한할 수 있습니다.
SELECT column1, column2
FROM table1
ORDER BY column1
OPTION (MAX_GRANT_PERCENT = 25); -- 쿼리가 서버 전체 메모리에서 사용할 수 있는 최대 메모리 비율을 지정
sys.dm_exec_query_memory_grants DMV를 사용하여 현재 실행 중인 쿼리에서 메모리를 얼마나 요청하고 사용하는지 모니터링 할 수 있습니다.
SELECT session_id, requested_memory_kb, granted_memory_kb, ideal_memory_kb, used_memory_kb
FROM sys.dm_exec_query_memory_grants;
쿼리가 필요한 메모리를 충분히 확보하지 못해 성능 저하가 발생하면, max server memory 값을 조정하거나 OPTION (MAX_GRANT_PERCENT)을 사용해 개별 쿼리의 메모리 사용을 제어할 수 있습니다.
# SQL Server에서 SORT와 HASH 연산이 수행될 때, 실행 계획 operation :
실행 계획에서 SORT 연산은 Sort 로 표시됩니다.
Sort Warnings : 메모리 부족으로 인해 디스크 스풀링이 발생할 때 경고
Hash Join : 테이블 간 조인을 해시 테이블을 사용한 조인
Hash Aggregate : GROUP BY와 같은 집계 연산을 할 때, 해시 테이블을 사용하여 데이터를 그룹화
Hash Match (Distinct) : DISTINCT 연산을 할 때 중복된 값을 제거하기 위해 해시 테이블이 사용되었을 때 표시됩니다.
'DB & SQL' 카테고리의 다른 글
[PostgreSQL] Replication (0) | 2025.05.19 |
---|---|
PostgreSQL Essential (0) | 2025.04.22 |
[DB2] Join Method, Sort 실행계획 operation, memory (1) | 2024.09.26 |
[DB2] 인덱스 종류와 Scan 종류 (0) | 2024.09.24 |
[DB2] 실행계획 (1) | 2024.09.24 |