0

単一の MDF デバイスに存在する大規模なミラーリングされた 1 TB DB があり、それをたとえば 5 つの 200 ギガ デバイスに分割したいとします。プロダクションを中断することなくこれを行いたいです。

ミラーを壊し、RESTORE プロセスを使用してミラーを作成し、本番環境を中断することなく、複数のデバイスへの分割を迅速に実現できると考えました。これを 2 回行うと、数時間で完了できます。

誰かがこれをしましたか?とにかくミラーリングしているので、それが好ましい方法ですか?

他の選択肢、長所と短所は何ですか? そして落とし穴?

また、5 つの新しい新しいデバイスを作成し、時間の経過とともにオブジェクトを新しいデバイスに移動させる、別のより有機的なプロセスを思い出します。このプロセスについては定かではありませんが、議論されていたことを思い出すようです。これには長い時間がかかり、場合によってはクロッキングが発生する可能性がありますか?

ありがとう

...レイ

4

1 に答える 1

0

これは見た目ほど単純なプロセスではありません。その理由は、ファイルを SQL サーバーに追加するだけでは不十分であり、4 つの新しいファイルを追加したとしても、それらはすべて空のスペースになるためです。 1Tb のデータを含む 1 つのファイルと 4 つの空のファイルがあり、SQL サーバーがファイルに比例フィル方式を使用するため、最終的にはいっぱいになりますが、ほとんどのクエリは依然として 1 つのファイルにヒットします。

パフォーマンスを向上させるためにこれを行っていると思いますか?その場合、実際にデータを分割するには、データを別のファイルに移動する必要があります。これをオンラインで実行できるかどうかは、Enterprise Edition を実行しているかどうかによって異なります (これにより、オンラインでインデックスを再構築できるため)。

テーブル (より正確にはクラスター化インデックス。すべての意図と目的においてテーブルとほぼ同じものです) を移動する簡単な方法は、新しいデータ ファイルを含む新しいファイル グループを追加し、次のように指定してクラスター化インデックスを再構築することです。新しいファイル グループの場合、次を使用してこれを行うことができます。

CREATE CLUSTERED INDEX Existing_Index_Name ON schema_name.table_name(column_name) 
WITH(DROP_EXISTING=ON,Online=ON) on [new_filegroup_name]
GO

このコードは、新しいファイル グループに新しいインデックスを作成し、古いインデックスを削除します。エンタープライズ エディションを実行している場合は、ユーザーをブロックすることなくすべてを実行します。

ファイル グループ間でデータを移動するその他の方法については、次のリンクを参照してください。

SQL Server データベース ファイル グループ間でデータを移動する

パフォーマンスを向上させるために、テーブルのパーティション分割も検討する必要があります。

テーブルとインデックスの分割

ミラーリングのセットアップに関しては、ミラーを解除し、プライマリにすべてのファイル/ファイル グループを追加し、ファイル グループ間でデータを移動し、変更されたデータベースをプライマリにバックアップし、ミラーに復元する必要があります (したがって、すべてのファイルミラーで同じようにセットアップされている)、ミラーリングを再セットアップします。

于 2013-04-08T14:02:09.587 に答える