SQL Serverでデータベース間のクエリは高価ですか?すべてのデータベースは同じインスタンスにあります。
SQL Serverでデータベース間のクエリは高価ですか?すべてのデータベースは同じインスタンスにあります。
回答:
申し訳ありませんが、質問にコメントするのに十分な評判はありませんが、私の経験から、クライアントアプリケーションがクロスデータベース結合を使用するクエリのトランザクションを発生させると、トランザクションが分散され、DTCトランザクションのオーバーヘッドが発生します。
この場合のDTCオーバーヘッドは、パフォーマンスの低下と見なされる可能性があります。MicrosoftはDTCトランザクションを次のように説明しますが、一般的に違いはごくわずかです。
分散トランザクションは通常、大量のシステムリソースを消費します
...サーバーが必要なリソースを提供できない場合、パフォーマンスが低下する可能性があります。
明確にするために、上記の記事では、リモートシステムが導入されたときにプロモートされるローカルトランザクションについて説明していますが、クロスデータベースクエリを使用する場合、同じサーバー上のトランザクションがこれに該当します。
Thomas Stringerが彼のコメントで指摘しているように、認証に余分なオーバーヘッドがありますが、これはSID駆動であるため、他のデータベースにアクセスするために別の資格情報を使用する必要がない限り、オーバーヘッドは最小限になると思います。
データベース設定に違いがあり、以前の提案よりも大きな影響を与える可能性のある追加のオーバーヘッドがデータベースの照合などで発生した場合。データベース照合は、パフォーマンスの違いだけでなく、機能の違いとして現れる可能性があります。
アーロンは、データベース間のクエリにリレーションシップを使用する利点を持たないオプティマイザーのパフォーマンスに対する最も強力な議論を持っていると思いますが、データベース内で自己完結しているので、リレーションシップを有利に使用できます。
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