スキップしてメイン コンテンツに移動

投稿

ラベル(Query Store)が付いた投稿を表示しています

SQL Serverの互換性レベル100 vs 160:Query Storeの視点から再考する

SQL Serverにおけるデータベースの互換性レベル(Compatibility Level)の変更は、単なる「バージョン互換性」以上の意味を持っています。実際には、クエリの最適化方式、カーディナリティ推定(Cardinality Estimation)、インテリジェントなクエリ処理(Intelligent Query Processing, IQP)機能の有効化にいたるまで、パフォーマンスに直結する重要なアーキテクチャ上の決定です。 特定のクエリが遅くなった際、互換性レベルを下げることで一時的に復旧させることがあります。しかし、これはデータベース全体として最新エンジンが提供する最適化機能を放棄することになります。本記事では、SQL Serverの互換性レベル100と160の違いをQuery Storeの視点から再考し、最適な移行・運用戦略を解説します。 1. 互換性レベル 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 を強制適用し、クエリパフォーマンスの安定性を担保。 そのため、古い互換性レベルで動作しているからといって、強力な監視ツールであるQuery Storeを諦める必要はありません。 2. 100 vs 160:インテリジェントなクエリ処理(IQP)の壁 しかし、単なるパフォーマンスの収集を超えて、 自動的な最適化 の領域に進むと、互換性レベルの...