web-dev-qa-db-ja.com

SQL Server2008の負荷分散

これまでにWebで見つけた情報は、SQL Server2008が真の負荷分散をサポートしていないことを示しています。

これは本当ですか? MSのサイトで適切なドキュメントを見つけることができないので、リンクをいただければ幸いです。

また、アクティブ/アクティブとアクティブ/パッシブの違い。

同じデータベースに複数のSQLServerインスタンスを接続することはできないと思いますよね?真の負荷分散を示すCos。

つまり、アクティブ/アクティブとは、2つの完全に分離したデータベースにアクセスする2つの別個のSQLServerインスタンスがある場合です。 1つが失敗した場合、残りの1つのインスタンスへの負荷を共有するだけですか?この構成は、実際に2つの完全に分離されたデータベースがある場合にのみ実際に使用できますか?

したがって、データベースが1つしかない私の場合、高可用性オプションとしてアクティブ/パッシブを選択する必要がありますか?

これらはかなり基本的な質問ですが、私はかなり基本的な答えを見つけることができませんでした!

ありがとうダンカン

4
Duncan

基本的に説明しているのはSQLServerクラスタリングです。これは、一緒に動作し、クライアントにとって単一の仮想サーバーと見なされる2つ以上のサーバー(ノード)のグループを指します。

SQL Serverクラスターは、2つのサーバーシナリオでアクティブ/アクティブまたはアクティブ/パッシブとして構成できます。 Microsoft SQL Serverクラスターの両方のノードが少なくとも1つのSQLインスタンス(アクティブ-アクティブ)の実行専用であるか、これらのノードの少なくとも1つが失敗したSQLのフェイルオーバーを受け入れるためにスタンバイとして予約されていますサーバーインスタンス(アクティブ-パッシブ)。

ここにあなたが読むことができるいくつかの記事があります:

他のオプションを説明するいくつかの記事(ただし、アプリケーションレベルで):

6
splattne

クラスタリングは高可用性ソリューションであり、スケーラビリティソリューションではありません。いわゆる「アクティブ/アクティブ」は、実際には、別の完全に別個のインスタンスをデプロイするためのスタンバイノードの再利用です。

読み取り/書き込みTransact-SQLリクエストの場合、どのような形式でも負荷分散はありません。 radのみのTransact-SQL(レポート)の場合、「 スケーラブル共有データベース 」のオプションがあります。

SQL2005およびSQL2008で「すぐに使用できる」負荷分散をサポートする唯一のテクノロジーは、負荷分散ルートの展開を介したServiceBrokerです。しかし、これがあなたにとって興味があるとは思えません。

3
Remus Rusanu

SQLクラスターにノードを追加するだけでは、処理能力は追加されません。オンラインのままにするノードが増えるため、可用性が向上するだけです。読み取り/書き込みクエリの処理は1つのノードに制限されており、ラウンドロビン負荷分散の概念はありません。

これは、MicrosoftのSQL Server 2008 Performance and Scaleというタイトルのホワイトペーパーです http://www.Microsoft.com/sqlserver/2008/en/us/wp-sql-2008-performance-scale.aspx

このホワイトペーパーでは、SQLServerのスケールアップとスケールアウトの違いについて説明します。 Remusが指摘しているように、読み取り専用データベース用のスケーラブルな共有データベースの概念があります(大規模なデータウェアハウスを考えてみてください)。

必要に応じて、分散処理にピアツーピアレプリケーションを使用できます。もちろん、他の合併症ももたらします。

3
Harv

MySpaceと、それらがSQLServerで高負荷をどのように処理したかについて読みたいと思うかもしれません。これは一連のトリックですが、負荷分散はありません。

http://highscalability.com/myspace-architecture

2
Steve Jones

まず、SQL Serverは、ボックスの場合の負荷分散をサポートしていないため、WindowsOSに作業を任せます。 2つのSQLServerインスタンスをインストールし、「ピアツーピアレプリケーション」を構成して、両方のサーバーで一貫したデータを保持できます。次に、2つ(!)の異なるデータベースで実際に作業します。ただし、2人のユーザーからの同じレコードに対するDMLステートメント中に競合が発生する可能性があります(1つはサーバー1にあり、もう1つはサーバー2にあります)。あなたの計画とフロントエンドプログラミングによってそのような衝突を避けるのはあなたの仕事です。残念ながら、SQLサーバーはこのタスクを引き継ぐことができません。一方、参加しているすべてのノードにSHARED STOREを使用すると、「フェールオーバークラスター」が発生する可能性があります。したがって、システムは1つの別個のデータベースで動作し、負荷分散(!)はなく、フェイルオーバーのみが行われます。同じではないことを反映してください! 1つのノードに障害が発生すると、別のノードがすぐにタスクを引き継ぎます。これまでのところ、これがあなたのお役に立てば幸いです。トーマス

1
Thomas Pfaff