Sind datenbankübergreifende Abfragen in SQL Server teuer? Alle Datenbanken befinden sich in derselben Instanz.
sql-server
Jonathan Allen
quelle
quelle
Antworten:
Es tut mir leid, ich habe nicht genug Reputation, um die Frage zu kommentieren. Wenn die Client-Anwendung jedoch eine Transaktion für eine Abfrage auslöst, die datenbankübergreifende Verknüpfungen verwendet, wird die Transaktion als verteilt eingestuft und hat den Overhead einer DTC-Transaktion .
Der DTC-Overhead kann in diesem Fall als Leistungseinbußen angesehen werden. Im Allgemeinen wäre der Unterschied vernachlässigbar, obwohl Microsoft DTC-Transaktionen als solche beschreibt:
... was auf eine Verschlechterung der Leistung hindeuten würde, wenn Ihr Server nicht die benötigten Ressourcen bereitstellen kann.
Zur Verdeutlichung beschreibt der obige Artikel, wie lokale Transaktionen bei der Einführung von Remotesystemen gefördert werden. Ich habe jedoch festgestellt, dass dies bei datenbankübergreifenden Abfragen für Transaktionen auf demselben Server der Fall ist.
Wie Thomas Stringer in seinem Kommentar ausführt, wird die Authentifizierung zusätzlichen Aufwand verursachen, auch wenn ich denke, dass dies SID-gesteuert sein wird und es dort nur minimalen Aufwand gibt, es sei denn, Sie müssen separate Anmeldeinformationen verwenden, um auf die andere Datenbank zuzugreifen.
Wenn es Unterschiede in den Datenbankeinstellungen gibt, die zusätzlichen Overhead im Join verursachen, kann dies größere Auswirkungen als die vorherigen Vorschläge haben, z. B. Datenbanksortierung. Die Datenbanksortierung kann sich als Funktionsunterschied und nicht nur als Leistungsunterschied manifestieren.
Ich denke, Aaron hat das stärkste Argument für die Leistung, da der Optimierer nicht den Vorteil hat, Beziehungen für datenbankübergreifende Abfragen zu verwenden, während er in einer Datenbank enthalten ist, die Sie zu Ihrem Vorteil nutzen können.
quelle
If a local transaction spans two or more databases on the same instance of the Database Engine, the instance uses an internal two-phase commit to commit all of the databases involved in the transaction.
- Wenn Sie etwas anderes gefunden haben, melden Sie bitte einen Fehler bei Connect mit eindeutigen Wiedergabeschritten.In SQL Server 2014 unterstützen speicheroptimierte Tabellen keine datenbankübergreifenden Transaktionen. Sie können nicht über dieselbe Transaktion oder dieselbe Abfrage auf eine andere Datenbank zugreifen, die auch auf eine speicheroptimierte Tabelle zugreift. Sie können nicht einfach Daten aus einer Tabelle in einer Datenbank in eine speicheroptimierte Tabelle in einer anderen Datenbank kopieren. http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx Verteilte und datenbankübergreifende Transaktionen werden für die Datenbankspiegelung / AOAG nicht unterstützt. http://technet.microsoft.com/en-us/library/hh393530.aspx . Wenn Sie die Eigentumsverkettung verwenden, beachten Sie die Sicherheitsrisiken http://msdn.microsoft.com/en-us/library/ms188676.aspx
quelle