SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2017 におけるクエリの最適化について

leave a comment

SQL Server 2017 ではクエリの最適化のための機能がいくつか追加されています。

image

これらについて、どのような情報を確認すればよいか、軽くまとめておきたいと思います。

新しい機能として、次の 2 つが SQL Server 2017 では追加が行われます。

  • Adaptive Query Processing (最適化クエリ処理)
  • 自動チューニング

SQL Server 2017 のエディションと機能ですが、現時点で情報が公開されています。
Editions and supported features of SQL Server 2017

Interleave Execution については、記載がないのですが、他の機能については、Enterprise Edition でのみ使用できる機能ということで情報が記載されています。

image

SQL Server 2016 SP1 で、パフォーマンス系のエディション間の機能差が緩和されましたが、一部の機能については Enterprise でのみ、提供されていたものもあったかと思います。

この辺は、SQL Server 2017 でも同一で、Standard と Enterprise では、いくつかの機能差が出てくるようですね。

Adaptive Query Processing については、次の情報が参考になります。

Batch Mode とついているものについては、バッチモードでの動作時の最適化となると思いますので、基本的には列ストアインデックスを使用した場合の動作の最適化になるかと。
(これらの最適化は、大量のデータを取得する場合に効果的に発揮しそうなものではありますが)

上述の情報にはサンプルも載っており、実際に動作を確認することも可能です。

自動チューニングについては、Automatic tuning から確認することができます。
この機能も Enterprise Edition 限定となっていますね。

自動チューニングはクエリストアの情報のさらなる活用が行われる機能で、実行プランの退行を自動的に検知し、過去に実行されたプランを自動的に強制 / 効果がない場合の設定の解除を実施してくれる機能となっています。

この機能、デモをするときに考慮点がいろいろとあるのですが、デモ用のコンテンツについては Demo: Identify and fix plan change regression in SQL Server 2017 RC1 で公開されていますので、こちらを使うとよさそうですね。
(私は自分で作ったシナリオでよく、デモをしていますが)

自動チューニングの対応状況については DMV が追加されており、sys.dm_db_tuning_recommendations (Transact-SQL) から確認することができます。

これらの機能は、SQL Server 2016 ではなかったもので、クエリを明示的な再コンパイルをすることなく、実行プランの補正が行われるものとなりますので、今後も情報はキャッチアップしていきたいですね。

これらの機能向けの拡張イベントもすでに追加されていますので、勉強する必要がある箇所が盛りだくさんです。

Written by masayuki.ozawa

8月 17th, 2017 at 10:09 pm

Posted in SQL Server

Tagged with ,

Leave a Reply

*