이 게시물은 Oracle®의 SQL 프로필과 기준선 간의 차이점을 강조하고 쿼리 튜닝 시 작동 방식을 설명합니다.
최적화 도구, 프로필 및 기준선
높은 수준에서 이 세 가지 요소는 다음과 같이 함께 작동합니다.
-
쿼리 최적화 프로그램은 시스템 통계, 바인드 변수 및 컴파일과 같은 정보를 사용하여 쿼리 실행을 위한 최상의 계획을 얻습니다. 그러나 때로는 입력 결함이 차선책으로 이어집니다.
-
SQL 프로필에는 이 문제를 완화하는 보조 정보가 포함되어 있습니다. 이러한 정보는 이러한 실수를 최소화하고 최적화 프로그램이 최상의 계획을 선택하는 데 도움이 됩니다.
-
SQL 문에 대한 SQL 계획 기준선은 승인된 계획 집합으로 구성됩니다. 명령문을 구문 분석한 후 옵티마이저는 수락된 계획 집합에서 최상의 계획을 선택합니다. 비용 최적화 프로그램이 다른 좋은 계획을 찾으면 새 계획을 계획 기록에 추가합니다. 그러나 최적화 프로그램은 현재 승인된 계획보다 더 나은 성능을 보일 때까지 새 계획을 사용하지 않습니다.
다음과 같이 생각하십시오. SQL 프로필은 최적의 계획을 선택하는 데 도움이 되도록 옵티마이저에 정보를 제공하지만 옵티마이저가 특정 계획을 선택하도록 강요하지 않습니다. SQL 계획 기준선은 옵티마이저 계획 선택을 승인된 계획 세트로 제한합니다. 비용 기반 계획을 고려하고 승인된 계획의 기준 세트에 포함합니다.
최적화 프로그램이 최소 비용 계획을 사용하고 최신 통계를 사용해야 하는 경우 SQL 프로필을 사용합니다. 특정 계획 중 하나를 사용하려는 경우 기준선을 사용합니다. SQL 계획 기준선이 허용 집합에서 최상의 계획을 얻을 수 없으면 대신 SQL 프로필을 사용하십시오.
SQL 계획 관리
SPM(SQL 계획 관리)에는 다음 구성 요소가 있습니다.
- 계획 캡처
- 계획 선택
- 계획 발전
SPM 계획 캡처
명령문을 실행하면 시스템이 이를 하드 구문 분석하고 사용 가능한 SQL 프로필에 따라 비용 계획을 생성합니다. 비용 기반 계획을 선택한 후 SQL 계획 기준선에서 사용 가능한 계획을 비교합니다. 비용 기반 생성 계획이 승인된 계획 중 하나와 일치하는 경우 해당 계획을 사용할 수 있습니다. 계획이 일치하지 않으면 시스템은 이를 계획 기준선에 승인되지 않은 계획으로 추가합니다.
SPM 계획 선택
기준 계획으로 SQL 문을 실행하면 해당 SQL에 대한 최상의 계획이 선택됩니다. 옵티마이저는 동일한 프로세스를 사용합니다. 사용 가능한 SQL 프로필도 각 계획의 예상 비용에 영향을 미치고 그에 따라 계획을 선택합니다.
SPM 계획 발전
SPM의 마지막 구성 요소는 승인되지 않은 계획을 승인된 계획에 대해 테스트하는 승인되지 않은 계획의 진화입니다. 이 프로세스는 쿼리에 걸리는 시간과 필요한 CPU 리소스를 고려하여 최상의 계획을 평가합니다. 쿼리 비용에 따라 최적의 플랜을 수용합니다. SQL 프로필을 사용할 수 있는 경우 예상 비용에 영향을 줍니다.
프로파일 대 기준 비교
https://www.cnblogs.com/princessd8251/articles/3637461.html의 다음 표는 SQL 프로필과 SQL 계획 기준을 비교합니다.
아키텍처
다음 이미지는 SQL 계획 기준 아키텍처를 보여줍니다.
이미지 출처:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/)
SQL 계획 기준선 로드
다음 이미지는 SQL 계획 기준선을 로드하는 두 가지 방법을 보여줍니다.
이미지 출처:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/
첫 번째 방법으로 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES를 설정할 수 있습니다. TRUE
로 초기화 매개변수 자동 계획 캡처를 사용합니다. 이 초기화 매개변수는 FALSE
입니다. 기본적으로 TRUE
로 설정하십시오. 다음 예와 같이:
두 번째 방법으로 DBMS_SPM을 사용할 수 있습니다. SQL 계획 기준선을 수동으로 관리할 수 있는 패키지입니다. 다음 예와 같이 SQL 튜닝 집합에서 계획을 로드합니다.
SQL 계획 기준을 수동으로 로드
계획 기준선을 수동으로 로드하려면 다음 명령을 사용하십시오.
SQL 계획 기준 사용량 확인
SQL 계획 기준선을 로드한 후 SQL을 실행하여 옵티마이저가 SQL 계획 기준선을 사용하고 있는지 확인해야 합니다. 다음과 같이 SQL_TEXT 및 계획 이름을 사용하여 SQL 계획 기준선을 쿼리할 수 있습니다.
SQL 계획 기준 표시
다음 쿼리를 실행하여 SQL 계획 기준선을 표시하십시오.
SQL 계획 기준선 삭제
SQL 계획 기준선을 삭제하려면 다음 쿼리를 실행하여 최적화 프로그램이 사용 중인 SQL 계획을 확인하십시오.
그런 다음 계획을 사용한 후 다음 명령을 실행하여 기준선을 삭제합니다.
오라클 SQL 프로필
Oracle Enterprise Manager(OEM)를 통해 또는 명령줄 쿼리를 사용하여 트리거하는 SQL 튜닝 권고자는 SQL 문에 대한 SQL 프로필을 생성할 수 있습니다. 이 프로필에는 명세서에 대한 추가 정보가 포함되어 있습니다.
예시
이 예에서는 먼저 sql_id에 대해 SQL 튜닝 권고자를 실행한 다음 SQL 프로필에서 작업을 수행합니다.
1. SQL 튜닝 어드바이저 실행
sql_id, 6dkrnbx1zdwy38
에 대해 다음 SQL 튜닝 어드바이저 코드를 실행합니다. :
다음 DBMS_SQLTUNE.report_tuning_task를 실행합니다. 추천:
2. sql_profile 수락
다음 코드를 실행하여 sql_profile을 수락하십시오.
3. sql_profile 이름 확인
다음 쿼리를 사용하여 sql_profile 이름을 확인하십시오.
4. sql_profile 비활성화
다음 코드를 실행하여 sql_profile을 비활성화하십시오:
활성화하려면 DISABLED
에서 값을 변경하십시오. ENABLED
로 .
5. sql_profile 삭제
다음 코드를 실행하여 sql_profile을 삭제하십시오.
결론
SQL 문을 실행할 때 최적화 프로그램은 쿼리를 구문 분석하고 하드 디스크에서 데이터를 검색하여 메모리에 저장하는 실행 계획을 생성합니다. SQL 프로필과 기준선은 최적화 프로그램이 시간과 CPU 측면에서 가장 비용이 적게 드는 계획을 선택하도록 안내합니다. 비용. 좋은 SQL 계획은 쿼리를 효율적으로 실행하고 원하는 결과를 더 빠르게 제공합니다.
데이터베이스 서비스에 대해 자세히 알아보십시오.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.