都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

いい機能追加を見つけたので、説明してみる

 ひさしぶりに 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 列に非クラスタ化インデックスを作成します。

f:id:koogucc11:20190505085846p:plain
TaxAmt列を非クラスタ化インデックス

 下記のクエリを SQL Server Management Studio で実行します。

UPDATE
    TOP(10) PERCENT Sales.SalesOrderHeader
SET
    TaxAmt = (TaxAmt * 1)

f:id:koogucc11:20190505090101p:plain
Update の実行結果

 下記のクエリを SQL Server Management Studio で実行します。

SELECT
    *
FROM
    Sales.SalesOrderHeader2
WHERE
    TaxAmt > 3000.00

f:id:koogucc11:20190505090525p:plain
SELECT の実行結果

 下記のクエリを SQL Server Management Studio で実行します。

SELECT
    *
FROM
    sys.dm_os_wait_stats
WHERE
    wait_type = 'WAIT_ON_SYNC_STATISTICS_REFRESH'

f:id:koogucc11:20190505090238p:plain
WAIT_ON_SYNC_STATISTICS_REFRESH の実行結果

 WAIT_ON_SYNC_STATISTICS_REFRESH の値が更新されています。また、プロファイラーで確認することで STATMAN が動作したことも判断できますね。

f:id:koogucc11:20190505090958p:plain
プロファイラーの結果

 役立ちますね。助かります。

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 Pencil(第2世代)

Apple Pencil(第2世代)