Planowanie dla powiadomień
Aby skutecznie używać powiadomień kwerendy, należy rozważyć czy aplikacji mogą korzystać z powiadomień kwerendy czy kwerendy, że aplikacja używa powiadomień obsługi i strategii aplikacja będzie używać subskrybowanie i powiadomienia.
Kwerendy powiadomień zapewniają wygodny sposób zmniejszyć natężenie ruchu w bazie danych, jeśli stosunkowo rzadko zmiany danych w kwerendzie, jeśli aplikacja nie wymaga aktualizacji chwilowa po zmianie danych, a kwerenda spełnia wymagania i ograniczenia opisane w Tworzenie kwerendy powiadomień.Wiele aplikacji opartych na sieci Web spełnia te kryteria, a te aplikacje mogą korzystać z powiadomień kwerendy.
Nie każdy scenariusz korzyści z powiadomień kwerendy.Kwerendy powiadomień są przydatne w sytuacjach, gdy aplikacja odczytuje dane z bazy danych często, ale gdy aktualizacje danych są stosunkowo rzadkie.Na przykład aplikacja katalogu online będzie przeglądany częściej niż aktualizacji katalogu.Dla online koszyk jednak zawartość określonego może zaktualizowane dość często tak powiadomień kwerendy zapewniają mniej korzyści.
Kwerendy powiadomień są bardziej wydajne aplikacji rozchodów kwerend, które mają wspólną strukturę i różnią się jedynie wartości parametrów.Na przykład:
SELECT ProductNumber, Name FROM Production.Product WHERE ListPrice < 300
SELECT ProductNumber, Name FROM Production.Product WHERE ListPrice < 500
przypadek subskrypcji powiadomienie kwerendy dla obu powiadomienie udostępniać tego samego szablonu wewnętrznych wymagające mniejszym obciążeniu w SQL Server niż dwa powiadomienie konstrukcji innej kwerendy.Zauważ, że parametrów w kwerendach są zachowywane.Mimo kwerend udostępniania szablonu, dodając element z ListPrice 350 powoduje powiadomienie na drugą kwerendę, ale nie na pierwszej.
Gdy powiadomień kwerendy tabela, aktualizacja tabela są droższe. Aparat baz danych Wykonuje dodatkowej pracy, aby sprawdzić subskrypcje i, jeśli to konieczne, generowanie powiadomień.Ponowne używanie szablonów wewnętrznego pomaga zminimalizować narzut na subskrypcja.Dlatego należy używać powiadomień kwerendy tylko dla aplikacji, które przesyłać kwerendy, które mają podobną strukturę.Aplikacja, która przesyła kwerendy z różnych struktur, nie należy używać powiadomień kwerendy.
Na przykład aplikacja, która zawiera wykaz elementów w danej ceny zakres przesyła kwerendy z taką samą strukturę.W takim przypadek Aparat baz danych wielokrotnie wewnętrznego szablonu dla każdej kwerendy i kwerendy powiadomień może zwiększyć wydajność.Jednak aplikacja umożliwiający sprawozdawczość ad hoc przesyła zapytania o różnej strukturze.przypadek aplikacji, nie należy używać powiadomień kwerendy.
Aparat baz danych Utrzymuje wewnętrzny szablonu, tak długo, jak jest używany przez co najmniej jeden zarejestrowanych subskrypcja. Aparat baz danych Ogranicza liczbę różnych szablonów wewnętrznych w określonej tabela.Po osiągnięciu tego limitu, Aparat baz danych nie rejestruje powodujących nowego szablonu do utworzenia subskrypcji.Zamiast tego Aparat baz danych natychmiast generuje komunikat z subskrypcja wskazujący, że subskrypcja nie można zarejestrować.
Planowania strategii efektywnego kwerendy powiadomień
Kwerendy powiadomienie ogólnie działa bardzo dobrze, gdy całkowita liczba powiadomienie jest światło na Średni, a aplikacja nie wymaga zmiany danych czas reakcji powiadomienie natychmiastowych.Typowy scenariusz unieważnienie pamięci podręcznej warstwie sieci Web pasuje do tego modelu i jest dobrym aplikacji za pomocą powiadomień kwerendy.Kwerendy powiadomień może być najlepszym wyborem dla aplikacji musi być otrzymane powiadomienia czas reakcji sub-second, gdy infrastruktura sieciowa nie jest zarówno szybki i niezawodny lub objętość powiadomienia jest bardzo wysoki.
Podczas używania kwerendy powiadomień, testowania i dostrajania aplikacji w skali i w środowisku, w którym będzie działać po wdrożeniu.Rozważmy scenariusz świata rzeczywistego przypadek użycia z heaviest spodziewane obciążenie i zaplanować rozerwania wysoce można ewentualnych możliwości.
Jeśli używasz powiadomień kwerendy w sytuacji konieczne powiadomień kwerendy niezawodne sub-second te same techniki dotyczą aplikacji Powiadomienia kwerendy, który stosuje się do budowania aplikacji OLTP wysokiej wydajności.
Upewnij się, że aplikacja nie przechowuje blokad dłużej niż ułamku sekundy.Na przykład nie uruchamiaj transakcji złożonych z wielu instrukcja od klient przez sieć ma wydajność zawodne.
Identyfikacji i hot plamy w tabelach danych użytkownika.
Tabela powiadomień kwerendy, tabele wewnętrznych często są skanowane sekwencyjnie dla każdej aktualizacji do powiązanych użytkownika, na którym masz zestaw kwerendy powiadomień.Jeżeli blokada poziom tabel przechowywanych w tabela wewnętrznej powiadomienie kwerendy może stać się wąskiego gardła, należy rozważyć Partycjonowanie tabela użytkownika, która ma powiadomienie kwerendy w kilku osobnych tabelach zmniejszyć liczbę powiadomienie możliwe musi być oceniona dla każdej zmiany danych.
Jeśli wezwania na powiadomienie o krótkiej żywotności użyteczne, należy rozważyć użycie czas-out z SqlDependency konstruktora jest znacznie mniej niż domyślny 5 dni (na przykład jednej minuty).To znacznie zmniejszyć liczbę wierszy w tabelach powiadomienia wewnętrzne kwerendy.Który z kolei może zmniejszyć czas wymagany do przetwarzania tych tabel i zmniejszyć blokada Rywalizacja o nich.
Alternatywy dla powiadomień kwerendy
Jeśli potrzebujesz czas reakcji szybkie, wysoce przewidywalne powiadomienie o zmianach danych w środowisku z danych z dużą szybkością aktualizacji i liczby żądań oczekujących powiadomienie rozważyć alternatywne rozwiązania, takie jak jedną z następujących.
Tworzenie AFTER UPDATE wyzwalacza w tabela monitorowane, której działanie używa SQL Server Service Broker, aby wysłać wiadomość do obiekt wymagające powiadomienie.(Może to być zaprojektowane na kilka sposobów, takich jak dodanie kolumna do tabeli odsetek, ze wskazaniem obiekt, musi być powiadamiany o zmianach lub przyłączenie się do tabela podstawowa do drugiej tabeli, który zawiera informacje dotyczące obiekt, które wymaga powiadomienie.)
Użyj niestandardowego rozwiązania warstwy aplikacji, które nie korzystają z powiadomień kwerendy.Na przykład skonfigurować powiadomienie występuje całkowicie z aplikację pośredniczącą, która przechowuje dane monitorowany kolekcja obiektów w pamięci głównej.Aplikacja może wygenerować powiadomienie, gdy obiekt zostanie zmodyfikowany w taki sposób, że spełnia kryteria dla powiadomienia.
Użyj systemu Windows serwer aplikacji tkaniny bufor, który obsługuje mechanizm powiadomienia o zmianie, oparte na pamięci podręcznej obiektów w pamięci i wywołanie zwrotne funkcji rejestrowania z obiektami.