1

質問:トランザクションログに入力せずにテーブルにインデックスを適用できるかどうか疑問に思っています。

詳細:800GBのテーブルがあります。数か月前、私はそれにインデックスを適用しに行き、トランザクションログがいっぱいになりました(明らかな理由で-それを試みることすら馬鹿でした)。代わりに、テーブルをもう一度作成し、必要なインデックスを適用してから、レコードをコピーする必要がありました。

次に、このテーブルにパーティションを設定します。クラスター化インデックスを削除し、新しいクラスター化インデックスをパーティション化レイアウトに適用しても、トランザクションログがいっぱいになるかどうか疑問に思っています(パーティションごとに1,000万行あると仮定します)。または、SQLサーバーがインデックスをより速く終了し、チェックポイントを実行できるようにするインデックスもパーティション化されるため、tlogはいっぱいになりませんか?

誰かが何か考えを持っていますか?それ以外の場合は、テーブルを再作成し、パーティションを適用して再入力するだけですが、明らかにそれははるかに複雑です。

ありがとう!

4

1 に答える 1

0

パーティション スキームを適用すると、膨大なログが作成されます。

最初に、可能であれば最小限のログ操作を実現できるかどうかを確認することをお勧めします。データベースが一括ログ モードの場合、オフライン CREATE INDEX は最小限のログ記録の対象となります。

不可能な場合 (たとえば、完全な復旧が必要な場合) は、パーティション分割されたテーブルへの移動をオンラインで行うことを検討します。オンライン操作は小さなバッチで実行され、頻繁にコミットされます。ログのバックアップを頻繁に取っている限り、それほど大きくはなりません。

于 2012-07-09T18:44:03.393 に答える