本当に簡単な質問だと思うのですが、誰か答えを手伝ってくれませんか?
SQL Server データベースに対してアプリケーションを実行し、パフォーマンス テストを実行しているとします。データベース サーバー クラスターをセットアップすると、パフォーマンスが向上すると期待できますか? それとも、フェールオーバーなどにより、アップタイムと可用性特性が向上するだけでしょうか?
私は後者を考える傾向があるので、データベースのパフォーマンスが弱いと感じた場合は、追加のハードウェアを購入するのではなく、アプリケーションの設計に取り組む必要があります...
よろしく、エミル
答え1
これは、クラスターの構成とアクセス方法によって大きく異なります。「クラスター」という単語が複数の異なる構成をカバーする可能性があることは役に立ちません。
いくつかの取り決めはほとんど影響を及ぼさず、いくつかは速度を著しく低下させます(たとえば、複数のアクティブ サーバーでは、トランザクションがコミットされたと見なされる前にすべてのサーバーが最新になるまで待機する必要があります。これにより、挿入/更新を含む操作のトランザクション待ち時間がかなり長くなる可能性があります。また、サーバー間でロック情報をマーシャリングすると、読み取り専用操作に同様の影響が及ぶ可能性があります)。また、いくつかの取り決めは速度を向上します(たとえば、ロック要件が許す場合は、読み取り専用ロードを複数のマシンに分散するための複数の読み取り専用レプリカ)。
つまり、はい、いいえ、あるいは多分です。構成の詳細(マシン、OS、DBMS、クラスター構成、クラスターにアクセスするコード(単一の Web サーバー、多数の Web サーバー、多数の外部クライアントなど)、負荷パターンなど)を説明すれば、より良い回答が得られるかもしれません。
(残念ながら、期待していたほど簡単な質問ではありません、ごめんなさい!)
答え2
いいえ、パフォーマンスの向上は見られません。MS SQL サーバーのクラスタリング ソリューションは高可用性のみを目的としており、スケーリングや負荷分散には適していません。
クラスター内の両方のノードを同時にアクティブにするように設定できますが、その場合、両方のノードは異なるデータベースを提供し、他のノードに障害が発生した場合にだけ、そのノードからデータベースを「引き継ぐ」ことになります。
1 台のサーバーで実現できる以上のパフォーマンスを SQL サーバーから得ることは複雑な問題ですが、シナリオが何であれ、RAM を増やし、ディスクを高速化し、データベース コードをチューニングすることで、データベース パフォーマンスの問題をより簡単に解決できると断言します。
答え3
共有ストレージ (SAN/NAS) が必要になりますが、これは直接接続されたディスクよりもパフォーマンスが優れている可能性が高いですが、クラスターはスタンドアロン インスタンスよりもパフォーマンスが優れているわけではありません。クラスターは、ハードウェア障害のリスクを軽減するためだけに使用します。