これは少し恥ずかしい質問で、長年これを見逃していたとは思えません。
401ヒープテーブルを持つベンダーサードパーティデータベースがあります。私は最近、Brent Ozarのスクリプトを使用し、sp_BlitzFirst
を設定して15分ごとに実行し、待機統計などを収集しています。
それが明らかにしたのは、24時間にわたって実行するたびに、修正するように指示されていた Forwarded Records でした。 DMV全体でクエリを実行し、150,000を超える転送されたレコード値を持ついくつかのテーブルを取得した一部の読者におそらく衝撃を与えます。
これを修正することは、テーブル全体にクラスター化インデックスを作成すること、またはALTER TABLE [tablename] REBUILD
を実行するための一時的な回避策として理解しています。
しかし、私が見つけられなかったのは、これによってテーブルがオフラインになるかどうか、およびこのコマンドを実行する前に知っておくべき他の問題があるかどうかです。
2008 R2のEnterprise Editionを使用していますが、この方法で実行すると停止の必要がなくなるのでしょうか?
ALTER TABLE [tablename] REBUILD WITH (ONLINE = ON);
誰かこれについて何か経験がありますか?
朗報:15万回転送されたレコードは、どのような期間について話しているかに応じて、実際にはそれほど悪くありません。転送されたレコードは、サーバーが稼働している限り追跡されます(一部の 特定の2012/2014ビルドのバグを取り除いて 。)。
オンラインでも機能しますが、ユーザーはIOスループット、テーブルのサイズ、非クラスター化インデックスの数、およびワークロードに応じて)に気づくでしょう。
これが私がそれに取り組む方法です: