Udostępnij za pośrednictwem


Optymalizacja sparametryzowana wydajności filtr z Precomputed partycji

Partycje precomputed to optymalizację wydajności, które mogą być używane w publikacji seryjnej filtrowane.Partycje precomputed jest również wymagania dotyczące korzystania z logicznego rekordów na filtrowanej publikacji.Aby uzyskać więcej informacji o rekordach logiczny zobacz Grupowanie zmiany pokrewne wiersze z rekordami logicznych.

Podczas synchronizacji z wydawcą subskrybent Wydawca musi dawać w wyniku abonenta filtrów, aby określić wiersze, które należą do tej subskrybent partycji lub zestaw danych.Ten proces określania członkostwa partycji o zmianach w Wydawca dla poszczególnych subskrybent otrzymywania filtrowanych danych jest określany jako Ocena partycji.Bez precomputed partycje oceny partycji należy wykonać dla każdej zmiany dokonane od czas ostatniego uruchomiono agenta korespondencji seryjnej określonych abonenta filtrowaną kolumna przez wydawcę, a ten proces ma być powtarzany dla każdego subskrybent, która synchronizuje z Wydawca.

However, if the Publisher and Subscriber are running on Microsoft SQL Server 2005 or a later version and you use precomputed partitions, partition membership for all changes at the Publisher is precomputed and persisted at the time that the changes are made.W rezultacie podczas subskrybent z Wydawca, można go natychmiast rozpocząć pobieranie zmian odnoszących się do jego partycji bez konieczności przechodzenia przez proces oceny partycji.Może to prowadzić do wzrost wydajności znaczący, gdy publikacja zawiera dużą liczbę zmian, subskrybentów lub artykułów w publikacji.

Oprócz korzystania z partycji precomputed wstępnie wygenerować migawek i/lub Zezwalaj na subskrybentów żądania migawka wytwarzania i aplikacji podczas pierwszego ich synchronizowania.Zapewnienie migawek publikacji, które za pomocą filtrów sparametryzowana za pomocą jedną lub obie z następujących opcji.Jeśli nie określisz jedną z następujących opcji, subskrypcje są inicjowane przy użyciu szeregu SELECT i instrukcji INSERT, a nie za pomocą BCP narzędzie; ten proces jest znacznie mniejsza.Aby uzyskać więcej informacji zobacz Migawki publikacji korespondencji seryjnej z filtrami sparametryzowana.

Aby używać precomputed partycji

Precomputed partycje są domyślnie włączone na wszystkich nowych i istniejących publikacji, zgodnymi ze wskazówek opisanych powyżej.Ustawienia można zmieniać za pomocą SQL Server Management Studio lub programowo. Aby uzyskać więcej informacji, zobacz następujące tematy:

Wymagania dotyczące używania Precomputed partycji

Jeśli są spełnione następujące wymagania, nowych publikacji korespondencji seryjnej są domyślnie tworzone precomputed partycji włączone, a istniejących publikacji są automatycznie uaktualniane do korzystania z funkcji.Jeśli publikacja nie spełnia wymagań, można ją zmienić, a następnie precomputed partycje mogą być włączone.Jeśli niektóre artykuły spełniają te wymagania, a niektóre nie, należy rozważyć utworzenie dwoma publikacjami, jedną dla partycji precomputed włączone.

Wymagania dotyczące klauzul filtru

  • Wszystkie funkcje używane w filtrach parametrami wiersza, takich jak HOST_NAME() i SUSER_SNAME(), powinny być wyświetlane bezpośrednio w klauzula sparametryzowana filtru i nie można zagnieżdżać wewnątrz dla widoku lub funkcja dynamicznych.Aby uzyskać więcej informacji na temat tych funkcji zobacz HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL), a Sparametryzowana filtry wierszy.

  • Zwracane wartości dla każdego subskrybent nie powinien zmieniać po utworzeniu partycji.Na przykład, jeśli w filtrze za pomocą HOST_NAME() (i nie zastępują wartości HOST_NAME()) nie należy zmieniać nazwy komputera przez subskrybent.

  • łączyć filtry nie powinna zawierać funkcji dynamicznego (funkcje, takie jak HOST_NAME() SUSER_SNAME(), które mają wartość inny od tego, która synchronizuje subskrybent).Tylko filtry sparametryzowana wiersz powinien zawierać funkcji dynamicznych.

  • Nie można użyć funkcji nondeterministic w klauzula filtru.Aby uzyskać więcej informacji na temat funkcji nondeterministic zobacz Deterministic and Nondeterministic Functions.

  • Widoki, do którego odwołuje się filtr łączenia klauzule lub klauzul sparametryzowana filtru nie powinna zawierać funkcji dynamicznych.

  • Nie powinno być nie relacji filtru cykliczne łączyć w publikacja.

Sortowanie bazy danych

  • W przypadku partycji precomputed sortowanie bazy danych jest zawsze używana dokonując porównania, a nie sortowanie tabela lub kolumna.Rozważmy następujący scenariusz:

    • Baza danych o przypadek-wielkość liter sortowanie zawiera tabela z przypadek-niewrażliwe sortowanie.

    • Tabela zawiera kolumna Nazwa_komputera, która jest porównywany z nazwy hosta abonenta w filtrze sparametryzowana.

    • Tabela ta zawiera jeden wiersz z wartością "MÓJKOMPUTER" i jeden wiersz z wartością "MójKomputer" w tej kolumnie.

    Jeśli subskrybent synchronizacji z nazwą hosta "MójKomputer" subskrybent otrzymuje tylko jeden wiersz, ponieważ wynikiem porównania jest przypadek-wrażliwe (sortowanie bazy danych).Jeśli precomputed partycje nie są używane, subskrybent otrzymuje zarówno wiersze, ponieważ tabela ma bez uwzględniania wielkości liter sortowanie.

Wydajność Precomputed partycji

Istnieje koszt mała wydajność precomputed partycji, gdy zmiany są przekazywane z subskrybent do Wydawca, ale większość czas przetwarzania korespondencji seryjnej jest poświęcony oceniania partycji i pobieranie zmian od Wydawca abonenta, dzięki czemu zysk netto nadal mogą być istotne.Korzyści wydajność będzie zależą od liczby subskrybentów synchronizowanie jednocześnie i liczba aktualizacji na synchronizacji, które przenieść wiersze z jednej partycji.