인텔리전트 성능

완료됨

SQL Server 및 Azure SQL에는 애플리케이션에 일관된 성능을 제공하는 자동화가 포함됩니다. 이러한 자동화 기능을 통칭 지능형 성능이라고 합니다.

Azure SQL의 인텔리전트 성능 기능에는 지능형 쿼리 처리, 자동 플랜 수정 및 자동 조정이 포함됩니다.

인텔리전트 쿼리 처리

IQP(지능형 쿼리 처리)는 쿼리 프로세서에 기본 제공되는 새로운 기능 모음입니다. 최신 데이터베이스 호환성 수준을 사용하여 설정됩니다. 애플리케이션은 최신 데이터베이스 호환성 수준을 사용하여 성능을 향상시킬 수 있습니다. 코드를 변경하지 않아도 됩니다. IQP의 예로 테이블 변수를 사용하여 쿼리를 더 빠르게 실행하는 데 도움이 되는 테이블 변수 지연 컴파일을 들 수 있습니다.

Azure SQL Database 및 Azure SQL Managed Instance는 IQP를 SQL Server 2019 이상 버전으로 사용하는 데 필요한 동일한 데이터베이스 호환성 수준(150)을 지원합니다.

자동 플랜 수정

쿼리 계획 회귀는 SQL Server에서 해결할 수 있는 가장 어려운 성능 문제 중 하나입니다. 쿼리 플랜 회귀는 동일한 쿼리를 다시 컴파일하며 새 플랜으로 인해 성능이 더 나빠질 때 발생합니다.

SQL Server 2017 및 Azure SQL Database에서는 쿼리 저장소 데이터를 분석하는 자동 플랜 수정이라는 개념을 도입했습니다. SQL Server 2017 이상 및 Azure SQL Database에서 쿼리 저장소를 사용하도록 설정하는 경우 SQL Server 엔진은 쿼리 계획 회귀를 찾은 후 권장 사항을 제공합니다. sys.dm_db_tuning_recommendations DMV(동적 관리 뷰)에서 이러한 권장 사항을 볼 수 있습니다. 이러한 권장 사항에는 성능이 “양호한 상태”일 때 수동으로 쿼리 계획을 강제 적용하는 T-SQL 문이 포함됩니다.

이러한 권장 사항을 확신하는 경우 회귀가 발생할 때 플랜을 자동으로 적용하도록 SQL Server를 설정할 수 있습니다. ALTER DATABASEAUTOMATIC_TUNING 인수를 사용하여 자동 계획 수정을 사용하도록 설정합니다.

Azure SQL Database의 경우 Azure Portal 또는 REST API에서 자동 조정 옵션을 통해 자동 플랜 수정을 사용하도록 설정할 수도 있습니다. 자동 플랜 수정 권장 사항은 쿼리 저장소를 사용하도록 설정한(Azure SQL Database 및 Azure SQL Managed Instance의 기본 설정) 모든 데이터베이스에서 항상 사용하도록 설정됩니다. 새 데이터베이스의 경우 Azure SQL Database에 대해 자동 계획 수정(FORCE_PLAN)이 기본적으로 사용하도록 설정됩니다.

Azure SQL Database의 자동 조정

자동 계획 수정은 Azure SQL 및 SQL Server의 자동 튜닝의 예이지만 Azure SQL Database 자동 튜닝의 고유한 측면은 자동 인덱싱입니다.

참고 항목

현재 SQL Managed Instance에서는 자동 인덱싱을 사용할 수 없습니다.

클라우드는 Microsoft에서 플랜 권장 사항 외의 성능 권장 사항 및 자동화 형태로 추가 서비스를 제공할 수 있는 방법을 제공합니다. 이 기능을 Azure SQL Database의 자동 조정이라고 합니다. 이러한 서비스는 Azure SQL Database 인스턴스에서 성능 데이터를 분석하는 백그라운드 프로그램으로 실행됩니다. 모든 데이터베이스 구독의 가격에 포함됩니다.

기본 시나리오 자동 조정은 인덱스와 관련된 문제를 처리하도록 설계되었습니다. 자동 튜닝은 쿼리 저장소 및 DMV를 포함한 데이터베이스 원격 분석의 데이터를 분석하며, 애플리케이션 성능을 개선시킬 수 있는 인덱스 만드는 것이 좋습니다. 또한 자동 조정 서비스를 사용하도록 설정하여 쿼리 성능을 향상시킬 것으로 판단되는 인덱스를 자동으로 만들 수 있습니다. 자동 조정 기능은 인덱스 변경 내용을 모니터링하고 삭제를 권장하거나 쿼리 성능이 향상하지 않는 인덱스를 자동으로 삭제합니다.

Azure SQL Database의 자동 조정 기능은 인덱스를 권장하는 보수적인 접근 방법을 사용합니다. 이는 sys.dm_db_missing_index_details와 같은 DMV 또는 쿼리 표시 계획에 나타날 수 있는 권장 사항이 자동 튜닝을 위한 권장 사항으로 즉시 표시되지 않을 수 있음을 의미합니다. 자동 조정 서비스는 시간에 따른 쿼리를 모니터링하고 기계 학습 알고리즘을 사용하여 쿼리 성능에 실제로 영향을 주는 권장 사항을 만듭니다.

인덱스 권장 사항에 대한 자동 조정은 인덱스에서 삽입, 업데이트 또는 삭제와 같은 작업을 수행할 때 발생하는 오버헤드 성능을 고려하지 않습니다. 일반적으로 자동 인덱스 기능이 만드는 새로운 비클러스터형 인덱스는 성능에 크게 긍정적인 영향을 미칩니다.

매개 변수가 있는 쿼리는 자동 조정에 대한 추가 시나리오를 나타냅니다. 매개 변수화되지 않은 값이 있는 쿼리는 매개 변수화되지 않은 값이 다를 때마다 실행 계획이 다시 컴파일되기 때문에 성능 오버헤드가 발생할 수 있습니다. 많은 경우에 매개 변수 값이 다른 동일한 쿼리는 동일한 실행 플랜을 생성합니다. 그러나 이러한 플랜은 여전히 플랜 캐시에 개별적으로 추가됩니다. 실행 플랜을 다시 컴파일하는 프로세스는 데이터베이스 리소스를 사용하고, 쿼리 기간을 늘리고, 플랜 캐시를 오버플로합니다. 이러한 이벤트로 인해 캐시에서 플랜이 제거됩니다.

이 시나리오를 해결하려면 PSP(매개 변수 중요한 계획) 최적화를 사용할 수 있습니다. PSP 최적화는 매개 변수가 있는 단일 문에 대해 활성 캐시된 여러 계획을 자동으로 사용하도록 설정합니다. 캐시된 실행 계획은 고객이 제공한 런타임 매개 변수 값에 따라 다양한 데이터 크기를 수용합니다.

Azure SQL Database의 자동 조정을 사용하는 인덱스 예제

다음은 시간에 따른 워크로드 분석을 기준으로 데이터베이스에서 인덱스가 권장되는 Azure Portal 예제입니다. 아직 이와 같은 권장 사항을 생성할 만큼 샌드박스 Azure SQL Database에 충분한 작업을 보내지 않았습니다. CREATE INDEX 권장 사항은 이 연습의 짧은 시간 내에 생성되는 것이 아니라 워크로드가 캡처되는 동안 시간이 지남에 따라 생성됩니다.

Screenshot of index recommendation notification.

Azure Portal의 성능 개요를 살펴보면 쿼리 저장소에서 볼 수 있는 상위 5개 리소스 소비 쿼리에 대한 성능 정보가 표시됩니다. 권장 사항도 표시됩니다.

Screenshot of Query Performance Overview.

또한 Azure Portal은 쿼리 저장소를 기준으로 하는 시각적 보고 도구인 Query Performance Insights를 제공합니다. 이 예제에서 Query Performance Insights는 가장 많은 리소스를 사용하는 특정 쿼리와 쿼리 성능을 개선하는 방법을 표시합니다.

Screenshot of Query Performance Insights.

Azure Portal에서도 성능 권장 사항을 직접 확인할 수 있는 방법을 제공합니다.

Screenshot of Performance Recommendations.

이 보기에서는 자동 조정 작업의 특정 권장 사항 및 기록을 보여 줍니다. 인덱스의 경우 인덱스 및 테이블에 대한 세부 정보가 표시됩니다. 자동화 옵션을 자동 조정을 활성화합니다.

Screenshot of automatic tuning options.

자동 조정 옵션은 데이터베이스 서버 또는 데이터베이스 수준에서 설정할 수 있습니다. 이 시나리오에서 자동 튜닝을 사용하도록 설정하면 인덱스가 자동으로 만들어집니다.

sys.database_automatic_tuning_options DMV를 통해 자동 튜닝 옵션을 볼 수도 있습니다.

참고 항목

인덱스 및 매개 변수 중요 계획에 대한 권장 사항 및 자동화는 Azure SQL Managed Instance 또는 SQL Server에서 사용할 수 없습니다. 자동 플랜 수정 기능은 사용할 수 있습니다.

권장 인덱스를 선택하면 특정 인덱스에 대한 자세한 정보를 볼 수 있습니다.

Screenshot of create index recommendation.

필요한 인덱스, 테이블, 공간에 대한 세부 정보가 표시됩니다. 권장 인덱스를 적용하거나 인덱스에 적용되는 T-SQL 스크립트를 볼 수 있습니다.

Screenshot of the index recommendation script.

인덱스는 온라인 인덱스로 적용되는 비클러스터형 인덱스입니다. 수동으로 또는 자동 조정을 통해 권장 사항에 따라 인덱스를 적용한 경우 권장 사항 엔진은 인덱스가 적용된 기간의 쿼리 성능도 모니터링합니다. 인덱스를 적용하기 전과 비교할 때 쿼리 성능이 저하되면 인덱스를 삭제할 수 있습니다.

지식 점검

1.

IQP(지능형 쿼리 처리)를 가장 잘 설명하는 것은 무엇입니까?

2.

자동 플랜 수정이 권장하고 수정하는 데 도움이 될 수 있는 성능 시나리오의 유형은 무엇입니까?

3.

Azure SQL Database에 대한 자동 조정은 어떤 정보를 기준으로 인덱스를 권장하고 만들 수 있습니까?