リンクされたSQL Serverにはどのような大きな制限が予想されますか?


9

当社の製品は、Microsoft SQL Serverに基づいています。現在、3つのデータベースを使用しており、常に1つのSQL Serverインスタンスに展開しています。

3つのデータベースは、OLTP、OLAP、および監査です。OLAPデータベースには、クロスデータベースクエリを使用して、OLTPと監査の両方からのEODに関する大規模な受信データがあります。

ご質問

これらの3つのデータベースを単一の物理サーバー内の3つの別々のStandard Edition インスタンスに展開し、SQL Serverのリンクサーバー機能を使用してそれらをバインドするとします。

  1. アプリケーションコードに対してどの程度透過的ですか?どのくらいの変化を期待できますか?
  2. OLAPへのインバウンドデータの量は5万〜10万行で、EODあたりのペイロードは200〜500 MBでした。どのくらいのパフォーマンス低下が予想されますか?
  3. 他にどんな大きな制限を期待する必要がありますか?

バックグラウンド

現在、最初の潜在的なクライアントを500人以上の同時ユーザーに売り込んでいます。

64コアと256GB RAMを含むサーバー仕様を作成しています。SQL Serverがこれらの豊富なリソースをすべて利用するには、クライアントはEnterprise Editionを購入する必要があります。EnterpriseEditionは、SQL Server 2016ではコア単位のライセンスでのみ利用できます。

ライセンス費用だけ(64 x $ 7400)でそれらが下がることを恐れています。したがって、データベースをStandard Editionの3つのインスタンスに分割し、それらをリンクして、リンク機能がアプリケーションコードから透過的になることを期待しています。

回答:


14

アプリケーションコードに対してどの程度透過的ですか?どのくらいの変化を期待できますか?

まったく透明ではありません。大きな変化が予想されます。

非常に大幅なパフォーマンスの低下に備える必要があります。

分散クエリ(リンクサーバーのフレームワーク)では、反対側のサーバーが何であれ、一般的なOLEDBモデルを使用します。SQL Serverターゲットがより完全な情報(メタデータ、統計など)を提供できる可能性があることは事実ですが、その結果はネイティブクロスデータベース操作ほど緊密に統合されていないか、または機能していません。

リモートクエリには、パフォーマンスの低下と、オプティマイザによる計画の選択の悪さに対する当然の評判があります。データを変更するステートメント(削除、挿入、更新、マージ)は、基本モデルがカーソルのモデルであることが多いため、特に発生しやすくなります。


アドホックなクロスインスタンスクエリを実行する必要がない場合は、許容されるパフォーマンスを得るために、格納されている各クエリを手動で調整できる場合あります、これは多くの作業であり、成功が保証されるわけではありません。

クロスインスタンスの一括操作では、あなたはより良い本物の一括操作を使用してオフになります(bcpBULK INSERT、SSIS ...など。)リンクサーバーを使用するよりもインスタンス間。


そうは言っても、基本的な考えは、私にとって価値があるよりもはるかに厄介なようです。Standard Editionの制限内で機能するハードウェアを指定します。または、クライアントがより高いパフォーマンスを必要とする場合は、より大きなサーバーを取得してEnterprise Editionを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.