SQL Serverでデータベース間のクエリは高価ですか?


15

SQL Serverでデータベース間のクエリは高価ですか?すべてのデータベースは同じインスタンスにあります。


3
私は彼らがそうであるという証拠を見つけたことがありません。私が考えることのできる唯一の例外は(テストされていませんが)(a)オプティマイザーが明示的でない関係から恩恵を受けられない(例えば、外部キー定義から恩恵を受けることができ、クロスに存在できないこと) -データベース)または(b)リンクサーバー上の問題である統計に関する問題がありますが、データベース全体でクエリを実行しているユーザーが統計を表示できない場合があるかもしれません。(b)が本物かどうかわからない-テストしていない、それがサーバー全体で深刻な問題になりうることを知ってください。
アーロンバートランド

2
私はこれについて@AaronBertrandと一緒にいますが、大ヒットがあると断定的に言うものは見ていません。方程式に何かを追加できると思う唯一のものは、おそらく何らかの認証操作です。それは私が大声で考えているだけです、私にはわかりません。ここでの最善の策は、クロスデータベースで自動化されたテスト/ベンチマークを設定し、次に同じデータベース間クエリでテストを数千回実行することです。平均、最大などを取得し、それに基づいて決定を下します。
トーマスストリンガー14

1
@thomasは、実際のクエリプランを見て、間違いなく違いを見ることができますか?
マックスヴァーノン14

@ジョナサン:「高価な」の定義は選択肢に関連しています。それで、あなたは何をしようとしていて、何を決めているのですか?これ以上の情報がなければ、この質問に対して正しいと思われる答えを額面どおりに得ることはかなり可能ですが、同時にあなたの状況にとって絶対に間違っています。すべてが持っているコストを、それのコストは、あなたがそれを比較しているものに応じて安価や高価なのいずれかである可能性があります。そして、クエリコスト(すなわち、時間、競合、など)必要がメンテナンスコスト、ハードウェアコスト、などと比較検討する
ソロモンRutzky

同じテーブルのクエリと比較してコストを知りたいです。
ジョナサンアレン14

回答:


6

申し訳ありませんが、質問にコメントするのに十分な評判はありませんが、私の経験から、クライアントアプリケーションがクロスデータベース結合を使用するクエリのトランザクションを発生させると、トランザクションが分散され、DTCトランザクションのオーバーヘッドが発生します。

この場合のDTCオーバーヘッドは、パフォーマンスの低下と見なされる可能性があります。MicrosoftはDTCトランザクションを次のように説明しますが、一般的に違いはごくわずかです。

分散トランザクションは通常、大量のシステムリソースを消費します

トランザクションプロモーション

...サーバーが必要なリソースを提供できない場合、パフォーマンスが低下する可能性があります。

明確にするために、上記の記事では、リモートシステムが導入されたときにプロモートされるローカルトランザクションについて説明していますが、クロスデータベースクエリを使用する場合、同じサーバー上のトランザクションがこれに該当します。

Thomas Stringerが彼のコメントで指摘しているように、認証に余分なオーバーヘッドがありますが、これはSID駆動であるため、他のデータベースにアクセスするために別の資格情報を使用する必要がない限り、オーバーヘッドは最小限になると思います。

データベース設定に違いがあり、以前の提案よりも大きな影響を与える可能性のある追加のオーバーヘッドがデータベースの照合などで発生した場合。データベース照合は、パフォーマンスの違いだけでなく、機能の違いとして現れる可能性があります。

アーロンは、データベース間のクエリにリレーションシップを使用する利点を持たないオプティマイザーのパフォーマンスに対する最も強力な議論を持っていると思いますが、データベース内で自己完結しているので、リレーションシップを有利に使用できます。



1
トランザクションプロモーションの記事は、CLRトランザクション用です。
stacylaray 14

-2

SQL Server 2014では、メモリ最適化テーブルはクロスデータベーストランザクションをサポートしていません。メモリ最適化テーブルにもアクセスする同じトランザクションまたは同じクエリから別のデータベースにアクセスすることはできません。あるデータベースのテーブルから別のデータベースのメモリ最適化テーブルにデータを簡単にコピーすることはできません。http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx分散トランザクションおよびクロスデータベーストランザクションは、データベースミラーリング/ AOAGではサポートされていません。http://technet.microsoft.com/en-us/library/hh393530.aspx。所有権チェーンを使用する場合は、セキュリティリスクに注意してくださいhttp://msdn.microsoft.com/en-us/library/ms188676.aspx


これは、「複数のインスタンスまたはサーバーにまたがるリソース」のシナリオにのみ適用されます。この場合、複数のデータベースを持つ単一のインスタンスについて話します。
ジョナサンアレン14

1
私の悪い...私はそれが同じインスタンス内にあることについて一部を逃した
stacylaray
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.