通常は、Ola Hallengrenのソリューションを使用します。このソリューションは、私たちのインデックス最適化ジョブ内にある統計の更新を処理します。標準的な方法として、すべてのサーバー(1500以上)で毎週日曜日の午前0時に予定されています。
現在、週の半ばに多くのパフォーマンスの問題が発生するサーバーがいくつかあり、パフォーマンスの問題でインシデントが発生したときに、その特定のデータベースに対してsp_updatestatsを実行します。 2000年から2016年までのすべてのバージョンが使用されている巨大な環境があります。これは、週の途中で特定のデータベースの統計更新を手動で実行している2012および2014バージョンです。
最近、トラブルが繰り返し発生しているため、非常にアクティブなデータベースに対して、sp_updatestatsを毎日スケジュールする必要がありました。
私の質問:
これで体験したことを手伝ってください。
どのくらいの頻度でスケジュールする必要がありますか?
これは自分で決める必要があります。
あまり頻繁にスケジュールすることの欠点は何ですか?
ケンドラ・リトルは UPDATE STATISTICS
:秘密IO Explosion 同じことをより効率的に行うためのヒントがいくつかあります。
並行して実行される定期的な更新の欠点を回避する方法はありますか?
統計の更新を並行して実行するつもりなら、2つの点に注意することをお勧めします。
3番目の質問の編集に基づいて、 Auto Update Stats Async Enabled をお勧めします。
追加のリソース:
sp_updatestats
by Erin Stellatoインデックスの再編成(ALTER INDEX REORG)は、インデックスの再構築とは異なり、統計を更新しません。個々のインデックスの再構築(ALTER INDEX myIndex REBUILD)は、そのインデックスの統計のみを更新します。
(断片化率などに基づいて)インデックスの再編成を実行している場合は、それを統計更新プロセスと組み合わせる必要があります少なくともで更新されなかった統計を持つインデックスインデックスの再編成(sys.dm_db_stats_propertiesを確認):
declare @tablename sysname = 'myTable';
select t.object_id, t.name, s.stats_id, p.last_updated
from sys.tables t
join sys.stats s
on t.object_id = s.object_id
cross apply sys.dm_db_stats_properties(s.object_id, s.stats_id) p
where t.name = @tablename;