SQL Server 負荷分散の読み取り/書き込み操作の分割

SQL Server 負荷分散の読み取り/書き込み操作の分割

こんにちは。SQL Server 2014 Standard Editionのノードが3つあり、そのうちの1つはプライマリとして、もう1つはトランザクションレプリケーションデータベースを使用したプライマリのレプリケーションとして使用されています。

他の 2 つのノードを使用して読み取り操作を行い、プライマリ ノードの負荷を軽減したいと考えています。

HA Proxy のようなロードバランサーで、読み取り操作を書き込みから分割し、読み取り操作のみをノード 2 と 3 に送信するように構成するにはどうすればよいですか? または、これを可能にする他のロードバランサーを使用する必要がありますか?

答え1

HA Proxy のようなロードバランサーで読み取り操作を書き込みから分割し、読み取り操作のみをノード 2 と 3 に送信するように構成するにはどうすればよいですか?

まったく違います。ロード バランサーが SQL Server 接続で何が起こっているかを把握し、何が読み取り専用、書き込み専用、または混合 (書き込み) と見なせるか、できないかを論理的に理解する方法はありません。特に、ロード バランサーは時間的に先を見通すことができないため、それは不可能です。SQL Server に接続し、トランザクションを開始し、読み取り操作を行ってから書き込みを開始できます。ロード バランシングを決定するときに、書き込みを意図していることをどうやって知ることができるのでしょうか。時間的に先を見通さずにこれを処理する論理的な方法はありません。

通常、これを行うには、アプリケーション レベルで異なる接続を用意し、アプリケーションにどれを使用するか決定させます。結局のところ、プログラマーは、読み取り専用の接続を意図しているのか、それとも後の段階で同じ接続/トランザクションに実際に書き込むのかを判断できるほど賢いと考えられます。

関連情報