다음을 통해 공유


자동 튜닝을 사용하여 쿼리 모니터링 및 워크로드 성능 향상

적용 대상: Azure SQL 데이터베이스 Azure SQL Managed Instance

Azure SQL 데이터베이스는 지속적으로 쿼리를 모니터링하고 워크로드의 성능 향상을 위해 수행할 수 있는 작업을 식별하는 자동으로 관리되는 데이터 서비스입니다. 권장 사항을 검토하고 수동으로 적용하거나 Azure SQL 데이터베이스가 자동으로 수정 작업을 적용하도록 할 수 있습니다. 이를 자동 튜닝 모드라고 합니다.

서버 또는 데이터베이스 수준에서 자동 튜닝을 사용할 수 있습니다.

참고 사항

Azure SQL Managed Instance의 경우 지원되는 옵션 FORCE_LAST_GOOD_PLAN은 T-SQL을 통해서만 구성할 수 있습니다. 이 문서에 설명된 Azure Portal 기반 구성 및 자동 인덱스 튜닝 옵션은 Azure SQL Managed Instance에 적용되지 않습니다.

참고 사항

ARM(Azure 리소스 매니저) 템플릿을 통한 자동 튜닝 옵션 구성은 현재 지원되지 않습니다.

서버에서의 자동 튜닝 사용

서버 수준에서 "Azure 기본값"에서 자동 조정 구성을 상속하거나 구성을 상속하지 않도록 선택할 수 있습니다. Azure 기본값은 FORCE_LAST_GOOD_PLAN 사용, CREATE_INDEX 사용 안 함, DROP_INDEX 사용 안 함입니다.

Azure Portal

Azure SQL 데이터베이스의 서버 자동 조정을 사용하려면 Azure Portal에서 서버로 이동한 다음, 메뉴에서 자동 조정을 선택합니다.

서버에 대한 옵션을 적용할 수 있는 Azure Portal의 자동 튜닝을 보여주는 스크린샷

사용하려는 자동 튜닝 옵션을 선택하고 적용을 선택합니다.

서버의 자동 조정 옵션은 서버의 모든 데이터베이스에 적용됩니다. 기본적으로 모든 데이터베이스는 부모 서버의 구성을 상속하지만 이 구성을 재정의하고 각 개별 데이터베이스에 대한 변경 내용을 지정할 수 있습니다.

REST API

REST API를 사용하여 서버에서 자동 튜닝을 활성화하는 방법에 대해 자세히 알아보려면 서버 자동 튜닝 업데이트 및 HTTP 메서드 가져오기를 참조하세요.

개별 데이터베이스에서의 자동 튜닝닝 사용

Azure Portal을 통해 각 데이터베이스에서 개별적으로 자동 튜닝 구성을 지정할 수 있습니다. 데이터베이스 수준에서 "Azure 기본값"에서 자동 튜닝 구성을 상속하거나 구성을 상속하지 않도록 선택할 수 있습니다. Azure 기본값은 다음과 같습니다. FORCE_LAST_GOOD_PLAN = 사용, CREATE_INDEX = 사용 안 함, DROP_INDEX = 사용 안 함.

모든 데이터베이스에 동일한 구성 설정을 자동으로 적용할 수 있도록 서버 수준에서 자동 튜닝 구성을 관리하는 것이 좋습니다. 데이터베이스가 동일한 서버에서 설정을 상속하는 다른 데이터베이스와 다른 설정을 가지도록 해야 하는 경우에만 개별 데이터베이스에서 자동 조정을 구성합니다.

Azure Portal

단일 데이터베이스에서 자동 튜닝을 사용하려면 Azure Portal에서 데이터베이스로 이동한 다음 자동 튜닝을 선택합니다.

개별 자동 조정 설정을 각 데이터베이스에 대해 별도로 구성할 수 있습니다. 개별 자동 튜닝 옵션을 수동으로 구성하거나 서버에서 해당 설정을 상속하는 옵션을 지정할 수 있습니다.

단일 데이터베이스에 대한 옵션을 적용할 수 있는 Azure Portal의 자동 튜닝을 보여주는 스크린샷

원하는 구성을 선택한 후 적용을 클릭합니다.

REST API

단일 데이터베이스에서 자동 조정을 활성화하기 위한 REST API 사용에 대해 자세히 알아보려면 Azure SQL 데이터베이스 자동 조정 업데이트 및 HTTP 메서드 가져오기를 참조하세요.

T-SQL

T-SQL을 통해 단일 데이터베이스에서 자동 튜닝을 사용하도록 설정하려면 데이터베이스에 연결하고 다음 쿼리를 실행합니다.

ALTER DATABASE current SET AUTOMATIC_TUNING = AUTO | INHERIT | CUSTOM

자동 튜닝을 자동으로 설정하면 Azure 기본값이 적용됩니다. 상속으로 설정하면 자동 튜닝 구성이 부모 서버에서 상속됩니다. 사용자 지정을 선택하면 자동 튜닝을 수동으로 구성해야 합니다.

T-SQL을 통해 개별 자동 튜닝 옵션을 구성하려면 데이터베이스에 연결하고 다음과 같은 쿼리를 실행합니다.

ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = ON, DROP_INDEX = OFF)

개별 조정 옵션을 ON으로 설정하면 데이터베이스가 상속한 설정을 무시하고 조정 옵션을 활성화합니다. OFF로 설정하면 마찬가지로 데이터베이스가 상속한 설정을 무시하고 조정 옵션을 비활성화합니다. 기본값이 지정된 자동 조정 옵션은 서버 수준 설정에서 자동 조정 구성을 상속합니다.

중요

활성 지역 복제의 경우 주 데이터베이스에서만 자동 튜닝을 구성하면 됩니다. 인덱스 만들기 또는 삭제와 같은 자동으로 적용되는 튜닝 작업은 지역 보조에 자동으로 복제됩니다. 읽기 전용 보조 데이터베이스에 다른 튜닝 구성을 적용하는 것은 지원되지 않으므로, 읽기 전용 보조 데이터베이스에서 T-SQL을 통한 자동 튜닝을 사용하도록 설정하려고 하면 실패합니다.

자동 튜닝을 구성하는 추가 T-SQL 옵션을 알아보려면 ALTER DATABASE SET 옵션(Transact-SQL)을 참조하세요.

문제 해결

자동화된 권장 사항 관리 사용 안 함

자동화된 권장 사항 관리가 비활성화되었거나 시스템에서 단순히 사용하지 않도록 설정된 오류 메시지의 경우 가장 일반적인 원인은 다음과 같습니다.

  • 쿼리 저장소를 사용할 수 없는 경우,
  • 쿼리 저장소 지정된 데이터베이스에 대해 읽기 전용 모드인 경우, 또는
  • 할당된 스토리지 공간이 부족하여 쿼리 저장소 실행이 중지되었습니다.

이 문제를 해결하려면 다음 단계를 고려해야 합니다.

  • 쿼리 저장소를 정리하거나 T-SQL을 사용하여 데이터 보존 기간을 “auto”로 수정하거나 쿼리 저장소 최대 크기를 늘립니다. 쿼리 저장소 권장 보존 및 캡처 정책을 구성하는 방법을 참조하세요.
  • SSMS(SQL Server Management Studio)를 사용하여 다음 단계를 수행합니다.
    • Azure SQL 데이터베이스에 연결하기
    • 데이터베이스 이름을 마우스 오른쪽 단추로 클릭합니다.
    • 속성으로 이동하여 쿼리 저장소 클릭합니다.
    • 작업 모드를 읽기/쓰기로 변경
    • 스토어 캡처 모드를 자동으로 변경
    • 크기 기반 정리 모드를 자동으로 변경

사용 권한

Azure SQL 데이터베이스의 경우 Azure Portal에서 자동 튜닝을 관리하거나 PowerShell 또는 REST API를 사용하려면 Azure 기본 제공 RBAC 역할의 멤버 자격이 필요합니다.

자동 튜닝을 관리하기 위해 사용자에게 부여해야 하는 최소 필요 권한은 SQL Database contributor 역할의 구성원입니다. SQL Server Contributor, Contributor, Owner 등 더 높은 권한 역할을 사용하는 것을 고려할 수도 있습니다.

T-SQL을 사용하여 자동 튜닝을 관리하는 데 필요한 권한은 ALTER DATABASE권한을 참조하세요.

이메일 알림 자동 조정 구성

자동 조정을 통해 만들어진 권장 사항에 대해 자동화된 이메일 알림을 받으려면 이메일 알림 자동 조정 가이드를 참조하세요.

다음 단계

  • 자동 조정 및 성능을 개선할 수 있는 방법에 대한 자세한 내용은 자동 조정 문서를 참조하세요.
  • Azure SQL 데이터베이스 성능 권장 사항에 대한 개요는 성능 권장 사항을 참조하세요.
  • 상위 쿼리의 성능에 미치는 영향을 알아보려면 Query Performance Insights를 참조하세요.