連載
» 2018年07月06日 05時00分 公開

SQL Serverトレースフラグレファレンス(31):【トレースフラグ 2312】──互換性レベルが110以下の場合、互換性レベル120の基数推定モデルを使用する

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「トレースフラグ」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は「トレースフラグ2312の詳細と使い方」を解説します。

[椎名武史,@IT]

SQL Serverトレースフラグレファレンス一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブル対策を踏まえた「SQL Serverのトレースフラグ」の使いこなしTipsを紹介していきます。

 今回は「トレースフラグ2312」の詳細と使い方を解説します。

 トレースフラグ2312は、互換性レベルが110以下の場合、互換性レベル120の基数推定モデルを使用する設定です。SQL Server 2014以降に対応します。

 SQL Serverの各バージョンではそれぞれのバージョンに対応する互換性レベルが存在します。互換性レベルを最新にすることで、最新の機能が使用できるようになりますが、アプリケーションの制約などにより互換性レベルを下げた設定で運用しなければならない場合があります。SQL Server 2014の互換性レベル120からは、基数推定の機能に大きな修正が入ったため、それまでの互換性レベルで作成した実行プランと大きく異なることが多々ありました。

 互換性レベルが110以下の場合、基数推定モデルは70を使用します。互換性レベル120では基数推定モデルも120を使用します。互換性レベル110以下のデータベースでトレースフラグ2312を有効にすると、基数推定モデルだけ120を使用して、実行プランを作成します。

 以下に、関連するMicrosoftのドキュメントを挙げます。以下のドキュメントではクエリの結果に含まれる行の数を予測する基数推定という意味で、カーディナリティ推定という用語を使っています。

カーディナリティ推定(SQL Server)

設定可能なスコープ

トレースフラグ2312
設定方法 可/不可 要/不要
スタートアップ
グローバルスコープ
セッションスコープ
クエリスコープ
トレースフラグ 3604/3605 不要

動作例

 実行プランの中に含まれているCardinalityEstimationModelVersionを見ることで、実際に使用する基数推定モデルを確認できます。

 SQL Server 2016の互換性レベル130を設定したデータベースで実行プランを作成すると、基数推定モデルは130でした(図1)。互換性レベルを110に変更すると基数推定モデルは70になりました(図2)。互換性レベルを110に保ったままトレースフラグ2312を有効にすると、基数推定モデルが120に変わりました(図3)。

図1 図1 互換性レベル130で実行した場合、基数推定モデルは130が使用された
図2 図2 互換性レベル110で実行した場合、基数推定モデルは70が使用された
図3 図3 互換性レベル110でトレースフラグ2312を有効にして実行した場合、基数推定モデルは120が使用された

 トレースフラグ2312と似た機能としてFORCE_DEFAULT_CARDINALITY_ESTIMATIONというクエリヒントがあります。こちらはトレースフラグなどで強制的に下げられた基数推定モデルをデータベースの互換性レベルと同じ基数推定モデルに戻す機能です。従って、トレースフラグ2312とは動作が異なります。

 ※本Tipsは、Windows Server 2012 R2上に「SQL Server 2016 SP1 CU3」をインストールした環境で解説しています。

筆者紹介

内ヶ島 暢之(うちがしま のぶゆき)

ユニアデックス株式会社 NUL System Services Corporation所属。Microsoft MVP for Data Platform(2011〜)。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を担当。2016年IoTビジネス開発の担当を経て、現在は米国シリコンバレーにて駐在員として活動中。目標は生きて日本に帰ること。

椎名 武史(しいな たけし)

ユニアデックス株式会社所属。Microsoft MVP for Data Platform(2017〜)。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。