기본 콘텐츠로 건너뛰기

라벨이 Intelligent Query Processing인 게시물 표시

SQL Server Compatibility Level 100 vs 160: Query Store 관점에서 다시 보기

SQL Server에서 데이터베이스의 호환성 수준(Compatibility Level)을 변경하는 것은 단순한 "버전 호환성" 이상의 의미를 갖습니다. 실제로는 쿼리 최적화 방식, 카디널리티 추정(Cardinality Estimation), 그리고 지능형 쿼리 처리(Intelligent Query Processing, IQP) 기능의 활성화 여부까지 결정하는 중요한 아키텍처적 선택입니다. 종종 특정 쿼리가 느려졌을 때 호환성 수준을 낮추어 임시로 성능을 복구하곤 합니다. 그러나 이는 데이터베이스 전체 관점에서 최신 엔진이 제공하는 핵심 최적화 기능을 포기하는 대가로 이어집니다. 본 글에서는 SQL Server 호환성 수준 100과 160의 차이점을 Query Store 관점에서 면밀히 분석하고, 최선의 성능 관리 전략을 공유합니다. 1. Compatibility Level 100에서도 Query Store는 작동할까? 가장 흔한 오해 중 하나는 **"구형 호환성 수준(예: 100)에서는 Query Store를 사용할 수 없다"**는 것입니다. 결론부터 말하자면, 그렇지 않습니다. 호환성 수준이 100(SQL Server 2008 수준)으로 설정되어 있더라도, SQL Server 2016 이상 버전에서 데이터베이스가 실행 중이라면 Query Store를 활성화하여 다음과 같은 핵심 기능을 정상적으로 활용할 수 있습니다. 성능 데이터 수집 : 쿼리 텍스트, 실행 계획(Execution Plan), 런타임 통계(평균 실행 시간, CPU 사용량, 논리적 읽기 등) 수집. 실행 계획 비교 : 호환성 수준 변경 전후 또는 특정 시점 간의 실행 계획 회귀(Regression) 감지. 실행 계획 강제 적용(Plan Forcing) : 특정 query_id 에 대해 과거의 안정적인 plan_id 를 강제로 적용하여 쿼리 성능의 일관성 보장. 따라서 호환성 수준이 낮다고 해서 성능 모니터링 및 복구의 핵심 도구인 Que...