MSSQL スナップショット レプリケーションを SQLExpress レプリカに高速化する

MSSQL スナップショット レプリケーションを SQLExpress レプリカに高速化する

適切に接続したリモート サイトがあり、特定のテーブルのスナップショットを 1 日 2 回配信しています。基盤となるアプリケーションのスキーマ制限に基づいて使用できる唯一の方法は、スナップショット レプリケーションです。

スナップショットは UNC パスと FTP 経由で公開され、約 6 MB とかなり小さいです。実際に FTP または UNC が使用されているかどうかは 100% わかりません。スナップショットが snapshot.cab ファイルに圧縮されてから、レプリケーション モニターで最初のスクリプトが適用されたことが表示されるまで約 5 分かかります。そのため、このギャップは転送時間であると考えられます。FTP 経由の 3 MB 接続でこれだけのデータをコピーすると、はるかに短い時間で済むため、UNC/SMB であると考えられます。

スナップショットをロードするにはさらに約 25 分かかります。これは、中程度のデータ量に対して長い時間のように思えます。行数は多く (いくつかのテーブルには 10 万行あります) ですが、実際のデータ量は非常に少ないです。

サブスクライバーは、3GB RAM を搭載した 2.8GHz ProLiant で SQLExpress 2005 を実行していますが、それ以外は使用されていません。ディスク競合があるかどうか、または他に何が起きているのかを確認するための詳細なプロファイリングはまだ実行していません。

ここでのレート制限は何なのか、またこれを高速化する方法があるのか​​どうか疑問に思っています。6MB の圧縮データをコピーしてロードするのに 30 分は長い時間のように思えます。

答え1

リモート側に SQL Express があるため、プッシュ サブスクリプションしか実行できないため、オプションはかなり制限されます。

レプリケーションの仕組みは、データがバイナリ ファイルに BCP されるというものです。レプリケーション エージェントは、スナップショットが完了したことを検出すると、BCP を使用してネットワーク経由でサブスクライバーにデータをロードします。ネットワーク経由の BCP は、必ずしも最速のプロセスではありません。

関連情報