액세스 플랜 그래프

액세스 플랜 그래프는 워크플로우 지원 프로그램이 EXPLAIN 데이터를 수집할 수 있는 모든 명령문에 대한 액세스 플랜을 그래픽으로 표시합니다.

DB2®가 SQL문을 처리할 때 DB2 옵티마이저는 요청된 데이터에 액세스하기 위해 몇 가지 대체 플랜을 생성합니다. 옵티마이저는 각 플랜의 실행 비용을 계산하여 실행 비용이 가장 적은 플랜을 실행합니다. 이를 액세스 플랜이라고 합니다.

액세스 플랜 그래프는 노드 및 노드 사이를 연결하는 라인으로 이루어집니다. 노드는 데이터 소스, 연산자, SQL문 및 쿼리 블록을 나타냅니다. 노드는 오직 하나의 상위 노드만 가질 수 있지만, 하위 노드는 무제한으로 가질 수 있습니다. 모서리의 화살표는 플로우의 방향을 표시합니다. 일반적으로 테이블 노드는 그래프의 맨 아래에 있고 여기부터 위쪽으로 액세스 플랜이 진행됩니다.

중첩 루프 조인 또는 인덱스 스캔과 같은 액세스 플랜의 일부 조작은 그래프에서 구문이라고 하는 노드 그룹으로 표시됩니다. 이 중 많은 구문에 조작을 표시하는 정의 노드가 있습니다. 예를 들어, HBJOIN 노드는 하이브리드 조인 조작이 수행되는 것을 나타내지만, 전체 하이브리드 노드는 그래프에서 노드 그룹으로 표시됩니다. 이러한 노드 그룹은 하이브리드 조인에 관련된 모든 기타 데이터 소스 및 조작을 표시합니다.

SQL문은 여러 개의 서브쿼리로 구성되는데, 이들 서브쿼리는 액세스 플랜 다이어그램에서 쿼리 블록별로 표시됩니다. 서브쿼리는 SELECT, INSERT, UPDATE 또는 DELETE문일 수 있습니다. 서브쿼리에는 FROM 절, WHERE 절 또는 UNION이나 UNION ALL 절의 하위 선택에 있는 다른 서브쿼리가 들어 있을 수 있습니다. 다른 서브쿼리 내에 있는 서브쿼리를 하위 서브쿼리라고 합니다. 다른 서브쿼리를 포함하고 있는 서브쿼리를 상위 서브쿼리라고 합니다. 이 상위-하위(parent-child) 관계를 트리 계층 구조로 표시할 수 있습니다.

서브쿼리가 상위 서브쿼리 또는 트리 계층 구조에서 더 높은 상위 서브쿼리의 컬럼 중 최소한 하나를 참조하는 경우, 이 서브쿼리는 상관 서브쿼리입니다. 그렇지 않으면, 비상관 서브쿼리입니다. 비상관 서브쿼리는 역시 비상관인 최상위 서브쿼리와 동시에 실행할 수 있습니다. 비상관 서브쿼리와의 관계와 관련하여 이 최상위 서브쿼리를 "열기 시 수행 상위 서브쿼리"라고 합니다. 상관 서브쿼리 실행은 상위 서브쿼리 실행에 바인드됩니다. 이러한 상위 및 하위 간의 상대적인 실행 관계를 액세스 플랜 그래프에서 별도의 트리 계층 구조로 표시할 수 있습니다.

비상관 서브쿼리
쿼리 블록 노드는 역시 비상관인 최상위 서브쿼리에 대한 쿼리 블록 노드의 오른쪽으로 연결됩니다.
상관 서브쿼리
쿼리 블록 노드는 상관 서브쿼리가 실행되는 상위 서브쿼리 내의 파트에 연결됩니다.

피드백