데이터베이스 호환성 모드 변경 및 쿼리 저장소 사용Change the Database Compatibility Mode and Use the Query Store

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL Server 2016 및 SQL Server 2017에서는 데이터베이스에 대한 DATABASE_COMPATIBILITY 수준이 변경된 후에만 일부 변경 내용이 활성화됩니다.In SQL Server 2016 and SQL Server 2017, some changes are only enabled once the DATABASE_COMPATIBILITY level for a database has been changed. 이 작업은 여러 가지 이유로 수행되었습니다.This was done for several reasons:

  • 업그레이드는 단방향 작업이므로(파일 형식을 다운그레이드할 수 없음) 데이터베이스 내에서 별도 작업에 대한 새로운 기능의 사용을 분리하는 값이 있습니다.Since upgrade is a one-way operation (it is not possible to downgrade the file format), there is value in separating the enablement of new features to a separate operation within the database. 이전 DATABASE_COMPATIBILITY 수준으로 설정을 되돌릴 수는 있습니다.It is possible to revert a setting to a prior DATABASE_COMPATIBILITY level. 새 모델은 중단 창 동안 발생해야 하는 것의 수를 줄입니다.The new model reduces the number of things that must happen during an outage window.

  • 쿼리 프로세서에 대한 변경 내용에는 복잡한 영향이 있을 수 있습니다.Changes to the query processor can have complex effects. 시스템에 대한 "적절한" 변경이 대부분의 고객에게 유용할 수도 있지만 다른 사용자에 대한 중요한 쿼리에서 허용되지 않는 회귀가 발생할 수 있습니다.Even though a “good” change to the system may be great for most customers - it may cause an unacceptable regression on an important query for others. 업그레이드 프로세스에서 이 논리를 분리하는 작업은 쿼리 저장소와 같은 기능이 계획 선택 회귀를 신속하게 완화하거나 프로덕션 서버에서 완전히 방지할 수 있도록 합니다.Separating this logic from the upgrade process allows for features, such as the Query Store, to mitigate plan choice regressions quickly or even avoid them completely in production servers.

참고

사용자 데이터베이스의 호환성 수준이 업그레이드 이전에 100 이상이었다면 업그레이드 후에도 동일하게 유지됩니다.If the compatibility level of a user database was 100 or higher before the upgrade, it remains the same after upgrade. 업그레이드 이전에 호환성 수준이 90이었다면 업그레이드된 데이터베이스에서는 호환성 수준이 SQL Server 2017SQL Server 2017에서 지원되는 가장 낮은 호환성 수준인 100으로 설정됩니다.If the compatibility level was 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2017SQL Server 2017. 업그레이드 후에는 tempdb, 모델, msdb 및 리소스 데이터베이스의 호환성 수준이 현재 호환성 수준으로 설정됩니다.The compatibility levels of the tempdb, model, msdb and Resource databases are set to the current compatibility level after upgrade. master 시스템 데이터베이스는 업그레이드 이전의 호환성 수준으로 유지됩니다.The master system database retains the compatibility level it had before upgrade.

새 쿼리 프로세서 기능을 활성화하는 업그레이드 프로세스는 제품의 릴리스 이후 서비스 모델과 관련이 있습니다.The upgrade process to enable new query processor functionality is related to the post-release servicing model of the product. 이러한 수정의 일부는 추적 플래그 4199에서 릴리스됩니다.Some of those fixes are released under trace flag 4199. 수정이 필요한 고객은 다른 고객에 대한 예기치 않은 회귀를 일으키지 않고 이러한 수정을 선택할 수 있습니다.Customers needing fixes can opt-in to those fixes without causing unexpected regressions for other customers. 쿼리 프로세서 핫픽스에 대한 릴리스 이후 서비스 모델은 여기에 설명되어 있습니다.The post-release servicing model for query processor hotfixes is documented here. SQL Server 2016년부터 새 호환성 수준으로 전환하면 이러한 수정이 이제 최신 호환성 수준에서 기본적으로 사용될 수 있으므로 4199 추적 플래그가 더 이상 필요하지 않습니다.Beginning with SQL Server 2016, moving to a new compatibility level implies that the 4199 trace flag is no longer needed because those fixes are now enabled by default in the latest compatibility level. 따라서 업그레이드 프로세스의 일부로 업그레이드 프로세스가 완료되면 4199가 활성화되지 않는 것을 확인하는 것이 중요합니다.Therefore, as part of the upgrade process, it is important to validate that 4199 is not enabled once the upgrade process completes.

쿼리 프로세서를 코드의 최신 버전으로 업그레이드하기 위해 권장되는 워크플로는 다음과 같습니다.The recommended workflow for upgrading the query processor to the latest version of the code is:

  1. 데이터베이스 호환성 수준을 변경하지 않고(이전 수준에서 유지) 데이터베이스를 SQL Server 2016으로 업그레이드Upgrade a database to SQL Server 2016 without changing the database compatibility level (keep it at prior level)

  2. 데이터베이스에서 쿼리 저장소를 활성화합니다.Enable the query store on the database. 쿼리 저장소 활성화 및 사용에 대한 자세한 내용은 Monitoring Performance By Using the Query Store을(를) 참조하세요.For more information about enabling and using the query store, see Monitoring Performance By Using the Query Store.

  3. 작업의 대표 데이터를 수집할 수 있도록 충분한 시간을 기다립니다.Wait sufficient time to collect representative data of the workload.

  4. 데이터베이스의 호환성 수준을 현재 호환성 수준으로 변경합니다.Change the compatibility level of the database to the current compatibility level.

    참고

    최신 호환성 수준은 SQL Server 버전에 따라 다릅니다.The latest compatibility level depends on the SQL Server version.

    • SQL Server 2016: 130SQL Server 2016: 130
    • SQL Server 2017: 140SQL Server 2017: 140
  5. 호환성 수준을 변경한 후에 SQL Server Management Studio를 사용하여 특정 쿼리에 성능 회귀가 있는지 평가합니다.Using SQL Server Management Studio, evaluate if there are performance regressions on specific queries after the compatibility level change.

  6. 회귀가 있는 경우 쿼리 저장소에서 이전 계획을 강제로 적용합니다.For cases where there are regressions, force the prior plan in the query store.

  7. 강제 적용에 실패하는 쿼리 계획이 있는 경우 또는 성능이 여전히 충분하지 않은 경우 호환성 수준을 이전 설정으로 되돌린 다음 Microsoft 고객 지원 서비스에 연락하는 것이 좋습니다.If there are query plans that fail to force or if performance is still insufficient, consider reverting the compatibility level to the prior setting and then engaging Microsoft Customer Support.

참고 항목See Also

데이터베이스의 호환성 수준 보기 또는 변경View or Change the Compatibility Level of a Database