今週も怒涛の一週間が過ぎました。12月は毎年出張が多く(忘年会込)、来週は大阪→新潟→徳島の順で出張します。前回、統計更新でどのような処理が走るのか簡単に書いてみました。
ryuchan.hatenablog.com
記事の中で下記のようなクエリを実行しました。
USE AdventureWorks; GO UPDATE STATISTICS Production.WorkOrder PK_WorkOrder_WorkOrderID WITH FULLSCAN; GO
UPDATE STATISTICS は OPTION(MAXDOP.. で最大並列数がコントロールができません。サーバの設定が下記の場合、UPDATE STATISTICS を実行すると、裏での処理は MAXDOP 16 で実行されていまいます。
SELECT StatMan([SC0]) FROM (SELECT TOP 100 PERCENT [WorkOrderID] AS [SC0] FROM [Production].[WorkOrder] WITH (READUNCOMMITTED) ORDER BY [SC0] ) AS _MS_UPDSTATS_TBL OPTION (MAXDOP 16)
しかし、ちょっとした工夫で MAXDOP をコントロールすることが可能です。新たにデータベースを作成し、下記の通り設定します。
下記のクエリを SQL Server Management Studio で実行します。
USE Sample; GO UPDATE STATISTICS AdventureWorks.Production.WorkOrder PK_WorkOrder_WorkOrderID WITH FULLSCAN; GO
SQL Server Profiler で参照すると、データベースで指定した MAXDOP の値が有効になります。統計情報更新時に負荷コントロールをするのに有効な方法かと思います。
SELECT StatMan([SC0]) FROM (SELECT TOP 100 PERCENT [WorkOrderID] AS [SC0] FROM [Production].[WorkOrder] WITH (READUNCOMMITTED) ORDER BY [SC0] ) AS _MS_UPDSTATS_TBL OPTION (MAXDOP 1)
- 出版社/メーカー: ジェイティビィパブリッシング
- 発売日: 2016/06/17
- メディア: ムック
- この商品を含むブログを見る
- 出版社/メーカー: ジェイティビィパブリッシング
- 発売日: 2016/04/20
- メディア: ムック
- この商品を含むブログを見る
- 出版社/メーカー: ジェイティビィパブリッシング
- 発売日: 2015/07/16
- メディア: ムック
- この商品を含むブログを見る