Lessons Learned #541: 자동 계획 수정 대 외부 테이블: 현장에서 얻은 실질적인 교훈
Azure SQL Database의 자동 계획 수정은 쿼리 계획 회귀를 해결하는 데 유용한 기능입니다. 쿼리 저장소를 활용하여 쿼리의 실행 계획이 저하될 때 이를 감지하고 이전에 좋았던 계획으로 자동 되돌릴 수 있습니다. 그러나 외부 테이블을 포함하는 쿼리는 원격 데이터 액세스에 의존하기 때문에 고유한 실행 특성을 가집니다. 이러한 쿼리는 성능이 로컬 데이터베이스 외부 요인에 의해 영향을 받기 때문에 항상 자동 계획 수정에 적합한 후보가 아닐 수 있습니다. 따라서 외부 테이블을 참조하는 쿼리를 식별하고 FORCE_LAST_GOOD_PLAN 기능에 참여해야 하는지 평가하는 것이 중요합니다. 외부 테이블 쿼리의 실행 계획을 검토하면 원격 리소스에 대한 종속성을 나타내는 원격 쿼리 연산자가 표시됩니다. 이러한 쿼리의 성능은 로컬 계획뿐만 아니라 원격 데이터베이스, 네트워크 지연 시간 및 데이터 검색 크기에 의해 영향을 받습니다. 결과적으로 이러한 쿼리에 대한 자동 계획 강제 적용의 잠재적 이점은 신중하게 평가해야 합니다. 이 프로세스에는 외부 테이블 쿼리와 관련된 특정 쿼리 저장소 쿼리 ID를 찾는 것이 포함됩니다. 식별되면 해당 쿼리 ID를 자동 계획 수정에서 제외할 수 있습니다. 이는 해당 특정 쿼리에 대해 FORCE_LAST_GOOD_PLAN을 비활성화하여 달성됩니다. 이러한 대상 제외를 통해 자동 계획 수정은 다른 쿼리에 대해 활성 상태를 유지하면서 외부 테이블 쿼리가 개별적으로 관리되도록 할 수 있습니다.