Ola Hallengrenの MaintenanceSolution.sql メンテナンススクリプトをインストールしました。 IndexOptimize - USER_DATABASES
ジョブによって生成されたログの出力を確認した後、統計が更新されないのではないかと心配しています。私の懸念の理由は、ログ出力にリストされたパラメーターに@UpdateStatistics = NULL
が表示されることです。
Date and time: 2013-07-16 13:58:24
Server: XXXXX
Version: 10.0.5512.0
Edition: Standard Edition (64-bit)
Procedure: [PROD-PH].[dbo].[IndexOptimize]
Parameters: @Databases = 'USER_DATABASES', @FragmentationLow = NULL, @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE', @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE', @FragmentationLevel1 = 5, @FragmentationLevel2 = 30, @PageCountLevel = 1000, @SortInTempdb = 'N', @MaxDOP = NULL, @FillFactor = NULL, @PadIndex = NULL, @LOBCompaction = 'Y', @UpdateStatistics = NULL, @OnlyModifiedStatistics = 'N', @StatisticsSample = NULL, @StatisticsResample = 'N', @PartitionLevel = 'N', @MSShippedObjects = 'N', @Indexes = NULL, @TimeLimit = NULL, @Delay = NULL, @LockTimeout = NULL, @LogToTable = 'Y', @Execute = 'Y'
Source: http://ola.hallengren.com
この背後にある動機は、期間の日付範囲に対して会計期間(4週間ごと)に1回実行されるクエリがあることです。手動でsp_updatestats
を実行しないと、クエリに20分分かかります。統計が最新の場合、クエリの所要時間は5秒未満です。問題のテーブルの行数は約160万ですが、1週間で約20Kしか増えていません。そのため、所定の4週間で20%の自動しきい値に近づくことはありません。他のいくつかのテーブルにも同様の成長パターンがあります。
私の計画は、このジョブを週に1回実行するようにスケジュールすることです。必要に応じて統計を更新しますか?
デフォルトでは、スクリプトは統計のメンテナンスを実行しません。スクリプトのパラメータのドキュメントは、 ここ にあります。
Value Description
================================
ALL Update index and column statistics.
INDEX Update index statistics.
COLUMNS Update column statistics.
NULL Do not perform statistics maintenance. This is the default.
したがって、メインスクリプトでメンテナンスジョブを作成し、インデックスと列の統計情報を更新する場合は、IndexOptimizeジョブを編集して、, @UpdateStatistics='ALL'
をプロシージャコールに追加する必要があります。