土曜日の夜に仕事するのやだなぁと思って、気晴らしついてでに MSSQL Tiger Team の SQL Server 2017 Showplan enhancements を確認してみた
SQL Server 2017 で実行プランの機能追加がありました。
blogs.msdn.microsoft.com
早速、SQL Server 2017 で下記のクエリを実行してみましょう。
SELECT soh.*, sod.* FROM Sales.SalesOrderHeader soh INNER JOIN Sales.SalesOrderDetail sod ON sod.SalesOrderID = soh.SalesOrderID WHERE CustomerID = 29565
プリパティからオプティマイザが使用している統計の情報が参照できるようになっています。
<optimizerstatsusage> <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderHeader]" statistics="[PK_SalesOrderHeader_SalesOrderID]" modificationcount="0" samplingpercent="100" la14-07-17t16:11:30.67="La14-07-17T16:11:30.67"> </statisticsinfo> <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderDetail]" statistics="[_WA_Sys_00000002_44CA3770]" modificationcount="0" samplingpercent="68.2155" lastu05-13t20:28:34.77="LastU05-13T20:28:34.77"> </statisticsinfo> <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderHeader]" statistics="[IX_SalesOrderHeader_CustomerID]" modificationcount="0" samplingpercent="100" last-07-17t16:11:32.41="Last-07-17T16:11:32.41"> </statisticsinfo> <statisticsinfo database="[AdventureWorks]" schema="[Sales]" table="[SalesOrderDetail]" statistics="[PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]" modificationcount="0" sampl67.8454="Sampl67.8454"> </statisticsinfo> </optimizerstatsusage>
クエリが予想したパフォーマンスが出ていない、インデックスを使用していないときに統計情報の最終更新時間が古すぎるとか、サンプリングが低すぎるなどが起因していることはよくあることです。実行プランに使用統計の情報が出るだけでも、パフォーマン調査の効率が上がりそうですね。それ以外にも、CPU Time や WaitStats の情報も出力されます。
<waitstats> <wait waittype="PAGEIOLATCH_SH" waittimems="9" waitcount="26"> </wait> </waitstats> <querytimestats cputime="2" elapsedtime="11"> </querytimestats>
これは非常に助かる、いい機能追加ですね。
なんとなく、タバスコ全種類買ってみたくなった。
- 出版社/メーカー: 明治屋
- メディア: 食品&飲料
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: 明治屋
- メディア: 食品&飲料
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: 明治屋
- メディア: 食品&飲料
- この商品を含むブログを見る
- 出版社/メーカー: 明治屋
- メディア: 食品&飲料
- クリック: 2回
- この商品を含むブログを見る
- 出版社/メーカー: 明治屋
- メディア: 食品&飲料
- この商品を含むブログを見る