Czy zapytania między bazami danych są drogie w SQL Server? Wszystkie bazy danych znajdują się w tej samej instancji.
Czy zapytania między bazami danych są drogie w SQL Server? Wszystkie bazy danych znajdują się w tej samej instancji.
Odpowiedzi:
Niestety nie mam wystarczającej reputacji, aby skomentować to pytanie, ale z mojego doświadczenia wynika, że jeśli aplikacja kliencka zgłosi transakcję dla zapytania korzystającego z połączeń między bazami danych, wówczas promocja transakcji zostanie rozproszona i narzut związany z transakcją DTC .
Narzut DTC w tym przypadku można uznać za negatywny w stosunku do wydajności. Zasadniczo różnica byłaby nieistotna, chociaż Microsoft opisuje transakcje DTC jako takie:
Transakcje rozproszone zwykle pochłaniają znaczne zasoby systemowe
... co sugeruje spadek wydajności, jeśli Twój serwer nie jest w stanie zaoferować wymaganych zasobów.
Aby wyjaśnić, powyższy artykuł opisuje lokalne transakcje promowane po wprowadzeniu systemów zdalnych, ale widziałem, że stało się tak w przypadku transakcji na tym samym serwerze, gdy używane są zapytania między bazami danych.
Jak zauważył Thomas Stringer w swoim komentarzu, uwierzytelnienie będzie wiązało się z dodatkowymi kosztami, chociaż myślę, że ponieważ będzie to oparte na SID, będzie tam narzut minimalny, chyba że będziesz musiał użyć oddzielnych poświadczeń, aby uzyskać dostęp do innej bazy danych.
Jeśli wystąpiły różnice w ustawieniach bazy danych, które spowodowały dodatkowy narzut w łączeniu, który mógłby mieć większy wpływ niż poprzednie sugestie - na przykład sortowanie bazy danych. Sortowanie bazy danych może objawiać się jako różnica funkcjonalna, a nie tylko różnica wydajności.
Myślę, że Aaron ma najsilniejszy argument za wydajnością, ponieważ optymalizator nie ma przewagi w korzystaniu z relacji w zapytaniach między bazami danych, podczas gdy samowystarczalny w bazie danych można wykorzystać relacje na swoją korzyść.
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.
- Jeśli stwierdzono inaczej, zgłoś błąd w programie Connect, wykonując jasne kroki odtwarzania.
W SQL Server 2014 tabele zoptymalizowane pod kątem pamięci nie obsługują transakcji między bazami danych. Nie można uzyskać dostępu do innej bazy danych z tej samej transakcji lub tego samego zapytania, które również uzyskuje dostęp do tabeli zoptymalizowanej pod kątem pamięci. Nie można łatwo skopiować danych z tabeli w jednej bazie danych do tabeli zoptymalizowanej pod kątem pamięci w innej bazie danych. http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx Transakcje rozproszone i między bazami danych nie są obsługiwane dla kopii lustrzanych baz danych / AOAG. http://technet.microsoft.com/en-us/library/hh393530.aspx . Jeśli zamierzasz korzystać z łańcucha własności, pamiętaj o zagrożeniach bezpieczeństwa http://msdn.microsoft.com/en-us/library/ms188676.aspx