ひさしぶりに SQL Database Engine Blog を眺めていて、下記の記事を見つけました。
blogs.msdn.microsoft.com
こんなシナリオを想定しています。
Consider the following query execution scenario:
You execute a SELECT query that triggers an automatic synchronous statistics update.
The synchronous statistics update begins execution and your query waits (is essentially blocked) until the fresh statistics are generated.
The query compilation and execution does not resume until the synchronous statistics update operation completes.
ある日突然クエリが遅くなった時があったけど、原因不明でよくわからないとかありますよね。お客さんから言われたので、確認してみたら再現性なし、みたいな経験ある人いますよね? 笑
統計自動更新時の待ちの種類 WAIT_ON_SYNC_STATISTICS_REFRESH の追加です。それでは早速試してみましょう。AdventureWorks2017 の Sales.SalesOrderHeader の TaxAmt 列に非クラスタ化インデックスを作成します。
下記のクエリを SQL Server Management Studio で実行します。
UPDATE TOP(10) PERCENT Sales.SalesOrderHeader SET TaxAmt = (TaxAmt * 1)
下記のクエリを SQL Server Management Studio で実行します。
SELECT * FROM Sales.SalesOrderHeader2 WHERE TaxAmt > 3000.00
下記のクエリを SQL Server Management Studio で実行します。
SELECT * FROM sys.dm_os_wait_stats WHERE wait_type = 'WAIT_ON_SYNC_STATISTICS_REFRESH'
WAIT_ON_SYNC_STATISTICS_REFRESH の値が更新されています。また、プロファイラーで確認することで STATMAN が動作したことも判断できますね。
役立ちますね。助かります。
We believe these two small changes will help address a significant diagnostic gap. For feedback or questions, please reach out to us at IntelligentQP@microsoft.com.
Apple Pencil (第二世代) を買うか悩み中。そうしたら、ケースも買わないと。
- 出版社/メーカー: Apple(アップル)
- 発売日: 2018/11/07
- メディア: Personal Computers
- この商品を含むブログを見る
- 出版社/メーカー: Electronic Silk Road Corp
- メディア: エレクトロニクス
- この商品を含むブログを見る