질의 계획

Query plan

쿼리 계획(또는 쿼리 실행 계획)은 SQL 관계형 데이터베이스 관리 시스템데이터에 액세스하는 데 사용되는 일련의 단계다. 이것은 접속 계획의 관계 모델 개념의 구체적인 사례다.

SQL선언적이기 때문에, 일반적으로 주어진 질의를 실행하는 많은 다른 방법들이 있으며, 성능은 매우 다양하다. 쿼리가 데이터베이스에 제출되면 쿼리 최적화 프로그램은 쿼리를 실행할 수 있는 여러 가지 가능한 계획 중 일부를 평가하고 최적의 옵션으로 간주되는 계획을 반환한다. 쿼리 최적화 프로그램이 불완전하기 때문에 데이터베이스 사용자와 관리자는 더 나은 성능을 얻기 위해 최적화 프로그램이 생성한 계획을 수동으로 검토하고 조정할 필요가 있다.

쿼리 계획 생성 중

주어진 데이터베이스 관리 시스템은 주어진 질의에 대한 계획을 반환하기 위한 하나 이상의 메커니즘을 제공할 수 있다. 일부 패키지 기능 도구는 쿼리 계획의 그래픽 표현을 생성할 것이다. 다른 도구는 연결에 특수 모드를 설정하여 DBMS가 질의 계획의 텍스트 설명을 반환하도록 한다. 쿼리 계획을 검색하는 또 다른 메커니즘에는 검사할 쿼리를 실행한 후 가상 데이터베이스 테이블을 쿼리하는 작업이 포함된다. 예를 들어 Oracle의 경우 설명 계획 문을 사용하여 이를 달성할 수 있다.

그래픽 평면도

예를 들어 Microsoft SQL Server와 함께 제공되는 Microsoft SQL Server Management Studio 도구는 포함된 샘플 데이터베이스에 대해 이 두 테이블 조인 예를 실행할 때 다음과 같은 그래픽 계획을 보여준다.

선택 * From 인적 자원.직원 AS e     이너 가입하다 사람.연락처 AS c     켜기 e.콘택트ID = c.콘택트ID 주문 BY c. 

UI는 사업자 유형, 각 사업자가 소비하거나 생산하는 행의 수, 각 사업자의 작업 예상 비용 등, 질의 계획에 관여하는 사업자의 다양한 속성의 탐색을 가능하게 한다.

샘플 쿼리 계획을 표시하는 Microsoft SQL Server Management Studio

텍스트 계획

스크린샷의 동일한 쿼리에 대해 주어진 텍스트 계획:

StmtText ----    --정렬(주문 BY:([c].[] ASC))         --중첩됨 루프스(내부 가입하다, 바깥쪽 참고 자료:([e].[콘택트ID], [Expr1004]) 와 함께 주문되지 않음 프리페치)              --군집화된 색인 스캔(객체:([어드벤처웍스].[인적 자원].[직원].[PK_종업원_직원아이디] AS [e]))              --군집화된 색인 구하다(객체:([어드벤처웍스].[사람].[연락처].[PK_Contact_Contact아이디] AS [c]),                구하다:([c].[콘택트ID]=[어드벤처웍스].[인적 자원].[직원].[콘택트ID] 로서 [e].[콘택트ID]) 주문된 앞으로) 

이는 쿼리 엔진이 직원 테이블의 기본 키 인덱스 및 기본 키 인덱스(연락처)를 통해 일치하는 검색을 수행함을 나타낸다.연락처 테이블의 ID 열)에서 일치하는 행을 찾으십시오. 양쪽의 결과 행은 중첩된 루프 결합 연산자로 표시되고 정렬된 다음 연결에 결과 집합으로 반환된다.

쿼리를 조정하기 위해 사용자는 데이터베이스가 사용할 수 있는 서로 다른 연산자와 의미론적으로 올바른 쿼리 결과를 제공하면서 다른 연산자보다 더 효율적인 연산자를 이해해야 한다.

데이터베이스 조정

질의 계획을 검토하면 새로운 지표나 기존 지표의 변경에 대한 기회를 제시할 수 있다. 또한 데이터베이스가 기존 인덱스를 제대로 활용하고 있지 않음을 보여줄 수 있다(쿼리 최적화 도구 참조).

쿼리 조정

쿼리 최적화 프로그램이 항상 특정 쿼리에 대해 가장 효율적인 쿼리 계획을 선택하는 것은 아니다. 일부 데이터베이스에서는 쿼리 계획을 검토할 수 있고 문제를 발견한 다음 쿼리 최적화 도구를 통해 이를 개선하는 방법에 대한 힌트를 제공한다. 다른 데이터베이스에서는 동일한 질의(동일한 결과를 반환하는 다른 질의)를 표현할 수 있는 대안을 시도할 수 있다. 일부 쿼리 도구는 최적기에서 사용하기 위해 쿼리에 포함된 힌트를 생성할 수 있다.

Oracle과 같은 일부 데이터베이스는 질의 조정에 대한 계획표를 제공한다. 이 계획 표는 쿼리를 실행하기 위한 비용과 시간을 반환한다. Oracle은 다음과 같은 두 가지 최적화 접근 방식을 제공한다.

  1. CBO 또는 비용 기반 최적화
  2. RBO 또는 규칙 기반 최적화

RBO는 서서히 더 이상 사용되지 않고 있다. CBO를 사용하려면 쿼리에서 참조하는 모든 표를 분석해야 한다. 테이블을 분석하기 위해 DBA는 DBMS_STATS 패키지에서 코드를 실행할 수 있다.

쿼리 최적화를 위한 다른 툴은 다음과 같다.

  1. SQL 트레이스[1]
  2. 오라클 트레이스 및 TKPROP
  3. Microsoft SMS(SQL) 실행 계획[3]
  4. Tableau Performance Recording(모든 DB)[4]

참조

  1. ^ "SQL Trace". Microsoft.com. Microsoft. Retrieved 30 March 2020.
  2. ^ "Using SQL Trace and TKPROF". Oracle.com. Retrieved 30 March 2020.
  3. ^ "Execution Plans". Microsoft.com. Microsoft. Retrieved 30 March 2020.
  4. ^ "Optimize Workbook Performance". Tableau.com. Tableau Inc. Retrieved 30 March 2020.