0

クライアントの .NET Web アプリケーション用に SQL Server 2012 データベース トランザクション レプリケーションを構成し、SQL トランザクションとレポートを異なる SQL Server に分散させました。

SQL-Node1 にトランザクション レプリケーションを実装し、マスター DB サーバーとして機能させました。SQL-Node2 でマスター DB のレプリケーションを構成して、大量のトランザクションと Excel シート エントリからのデータ アップロードを含む Web アプリケーションにレポートを引き出しました。毎日約 1000 万件のエントリがあります。

2 つの SQL Server 2012 インスタンスでレプリケーションを構成した後、数週間後、いくつかのパフォーマンスの問題に直面し、データベースにファイルをアップロードしているときに一部のリソースがロックされることがわかりました。これにより、アプリケーションはそれらのテーブルとデータにアクセスできなくなりました。また、ユーザーが Web アプリケーションにアクセスする日中にサーバーのパフォーマンスが非常に遅いこともわかりました。

現在、SQL Server 2012 の異なる 3 つのノードに負荷を分散することを検討しています。Web アプリケーションが SQL-Node1 のデータにアクセスして処理する場合、レポート クエリは SQL-Node2 からプル データを取得し、SQL-Node3 は Excel シートのアップロードに使用されます。他のすべての SQL ノードでレプリケートされるデータベースへのデータ。

現在のセットアップ、Windows Server 2008 Standard および SQL Server 2012 Enterprise Edition を搭載したすべてのサーバー。

データベース サイズ約: 15 GB / 使用されるレプリケーション: トランザクション / SQL ノード 1 で構成されたディストリビューター ロール / SQL ノード 2 で構成されたサブスクライバー ロール。

さまざまな負荷 (レポート、データのアップロード、トランザクション) を分散し、すべての SQL ノード間でデータを複製できる上記の問題を解決するソリューションを探しています。

SQL Server 2012 HA、SQL Server レプリケーション、または SQL Server ミラーリングのうち、上記のシナリオで適切に機能する機能はどれですか??

迅速な対応、大変有り難く存じます。...

4

2 に答える 2

1

複数のノードで変更が発生しているため (ノード 1 でトランザクション データ、ノード 3 で Excel アップロード)、「上記のいずれでもない」。上記のテクノロジーはすべて、データの変更が 1 つの場所で発生し、他の場所に伝播することに基づいて構築されています。ピア ツー ピア レプリケーションを見ることもできますが、やり過ぎのように思えます。

私だったら、ファイルのアップロード プロセスがパフォーマンスを低下させている理由を診断し、それを修正/回避します。それができたら、そのプロセスをノード 1 に戻し、レポートのニーズに対応するために可用性グループを実装します (HA のボーナスが追加されます)。

于 2013-07-20T12:33:26.057 に答える
0

1 つの大きなトランザクションで行われる大規模なデータのインポートでは、すべてのテクノロジが機能しなくなります。ETLのような関数として実行することをお勧めします。ステージング テーブルにインポートし、データを一口サイズのチャンクで運用テーブルに移行します (多くのデータ行サイズをテストして、環境に最適なサイズを見つけます)。あなたが話しているワークロードを備えたHA用のクラスターでのレプリケーションでは、2台のサーバーで問題ないはずです。

于 2014-01-04T08:25:05.917 に答える