Udostępnij za pośrednictwem


Jak replikacji scalania ocenia partycji w publikacjach filtrowane

Po jednej lub kilku tabel w publikacja seryjnej jest filtrowana z zastosowaniem sparametryzowana filtry i filtry łączyć, dane w tabelach opublikowanych jest podzielony na partycje.A partycji jest po prostu podzbiór wierszy w tabela.Podczas synchronizacji z programem Wydawca subskrybenta wydawcy musi określić wierszy, które należą do subskrybenta partycji na podstawie wartości dostaw subskrybenta funkcje systemowe SUSER_SNAME() lub HOST_NAME().Ten proces określania członkostwa zmiany w partycji Wydawca dla każdego subskrybenta otrzymywania filtrowanych zestawów danych jest określany jako oceny partycji.

Zależnie od danych w tabelach opublikowane i ustawienia wybrane podczas tworzenia filtru sparametryzowana i filtry pokrewne łączyć każdy wiersz w tabela opublikowanych można:

  • Należą do jednej partycji i replikowane na tylko jeden abonenta (wartość 3 dla sp_addmergearticle parametr @ partition_options).Na przykład w AdventureWorks2008R2 bazy danych, można filtrować pracownika tabela z następującej klauzula filtru: WHERE Employee.LoginID = SUSER_SNAME().The row matching each Login ID is sent to only one Subscriber.

  • Należą do jednej partycji i replikowane na więcej niż jeden abonenta (wartość 2 dla @ partition_options).Na przykład w AdventureWorks2008R2 bazy danych, można filtrować produktów tabela z następującej klauzula filtru: WHERE Products.ProductLine = HOST_NAME().The HOST_NAME() value is overridden such that the group of salespeople responsible for mountain bike sales receive all rows with a value of "M" in the ProductLine column; each row with a value of "M" belongs to only one partition, but it is sent to more than one Subscriber.Aby uzyskać więcej informacji o korzystaniu z HOST_NAME(), zobacz temat "filtrowanie z HOST_NAME()" sekcja w Filtry parametrami wiersza.

  • Należą do więcej niż jednej partycji i replikowane na więcej niż jeden abonenta (wartość 0 lub 1 dla @ partition_options).Na przykład w AdventureWorks2008R2 bazy danych, można filtrować produktów tabela z następującej klauzula filtru: WHERE Products.ProductLine = HOST_NAME() or Products.ListPrice < 100.In this case, sales people responsible for mountain bike sales can also sell products in other categories as long as the sale price is less than $100 dollars.Z powodu lub w klauzula filtru wiersza może należeć do więcej niż jednej partycji.

Jak partycje są oceniane

Ocena partycji występuje na dwa sposoby w replikacja scalająca, w zależności od tego, czy jest używana funkcja precomputed partycji.Jeżeli liczba wymagania są spełnione, domyślnie utworzony z partycjami precomputed włączone, nowych publikacji korespondencji seryjnej są i istniejące publikacje są uaktualniane automatycznie za pomocą funkcji.Aby uzyskać pełną listę wymagań, zobacz Optymalizacja sparametryzowana wydajności filtr partycji Precomputed.

Ocena partycji przy użyciu partycji Precomputed

Precomputed partycji członkostwa partycji dla wszystkich zmian przez wydawcę wstępnie obliczone i utrwalone na czas zmian wprowadzonych w opublikowanych tabel.W wyniku podczas synchronizacji z programem Wydawca subskrybenta go niezwłocznie rozpocznie pobieranie zmian odnoszących się do jego partycji bez konieczności przechodzenia przez proces oceny partycji.Może to prowadzić do znaczący wzrost wydajności publikacja ma dużą liczbę zmian, subskrybentów lub artykułów w publikacja.

Są zaangażowane w ocenę wstępnie obliczona partycja tabele systemowe:

  • MSmerge_partition_groups

  • MSmerge_current_partition_mappings

  • MSmerge_past_partition_mappings

MSmerge_partition_groups zawiera jeden wiersz dla każdej partycji, który jest zdefiniowany w publikacja.Partycje mogą być:

  • Zdefiniowane jawnie przy użyciu sp_addmergepartition lub Partycji danych strona w oknie dialogowym właściwości publikacji.

  • Automatycznie tworzone, gdy abonent synchronizuje Jeśli subskrybenta wymaga partycji, która jeszcze nie ma wpisu w MSmerge_partition_groups.

Dwie tabele (MSmerge_current_partition_mappings i MSmerge_past_partition_mappings) są wypełniane zmiany do opublikowanej tabel.Każdy czas zmiany w opublikowanej tabela w bazie danych publikacja, wyzwalacza seryjnego rekordy metadane i fires:

  • MSmerge_current_partition_mappings zawiera jeden wiersz dla każdej unikatowej kombinacji wierszy w MSmerge_contents i MSmerge_partition_groups.Na przykład, jeśli wiersz w tabela użytkownika należy do dwóch partycji i wiersz zostanie zaktualizowany, jeden wiersz jest wstawiany MSmerge_contents w celu odzwierciedlenia aktualizacji i dwa wiersze są wstawiane do MSmerge_current_partition_mappings, aby wskazać, że zaktualizowanych wierszy należy do dwóch partycji.

  • MSmerge_past_partition_mappings zawiera jeden wiersz dla każdego wiersza, w której już w danej partycji.Wiersz przenosi się z partycji, jeśli:

    • Skreśla się wiersz.Usunięcie wiersza z tabela użytkowników zostanie wstawiony wiersz MSmerge_tombstone i jeden lub więcej wierszy są wstawiane do MSmerge_past_partition_mappings.

    • Zmieniona wartość kolumna używane do filtrowania.Na przykład jeśli sparametryzowana filtr jest oparty na Państwo, w którym siedzibą firmy i przenosi firmy, wiersz firmy (i powiązane wiersze w innych tabelach) może przenieść z jednego sprzedaży osoby partycji danych do partycji dla innego sprzedawcę.Jeśli wiersz zostanie zaktualizowany, takie, że nie należy w partycji, wiersz jest wstawiany lub aktualizowany w MSmerge_contents i jeden lub więcej wierszy są wstawiane do MSmerge_past_partition_mappings.

    Ostrzeżenie

    Jeśli sasiadująco partycji z jednej subskrypcja na partycji (wartość 3 dla sp_addmergearticle parametr @ partition_options) jest używany tabele systemowe MSmerge_current_partition_mappings i MSmerge_past_partition_mappings nie są używane do śledzenia wierszy partycji mapowania, ponieważ każdy wiersz należy tylko jedną partycję i mogą być zmieniane na tylko jeden abonenta.

Ocena partycji przy użyciu procesu SetupBelongs

Bez precomputed partycji, proces znany jako SetupBelongs jest używana.Podczas synchronizacji partycji ocena jest przeprowadzana dla każdej zmiany wprowadzone od czasu ostatniego tabelą filtrowaną przez wydawcę czas uruchomiono agenta scalania dla specyficznego subskrybenta.Ten proces jest powtarzany dla każdego abonenta, która synchronizuje z Wydawca.

Przeprowadzenie oceny partycji abonenta wywołań scalić agenta systemowa procedura składowana sp_MSsetupbelongs, która:

  1. Tworzy dwie tabele tymczasowe dla każdego artykuł filtrowane: # belongs_<RandomNumber> i # notbelongs_<RandomNumber>.

  2. Używa wartości zwróconej przez SUSER_SNAME() lub HOST_NAME() funkcje subskrybent kwerendy widoku systemu; Kwerenda jest używana do określania, czy wiersz w MSmerge_contents lub MSmerge_tombstone jest istotne dla partycji abonenta.

  3. Jeśli wiersz nie jest istotne dla subskrybenta w ogóle (takich jak wstawkę innej partycji), metadane dla tego wiersza nie jest przechowywana w # należy lub #notbelongs.Jeśli wiersz jest istotne, istnieją dwa możliwe wyniki:

    • Dodawany jest wiersz do # należy jeśli: w wierszu MSmerge_contents należącego do partycji lub w wierszu Wstaw jest MSmerge_contents jest aktualizacja, która nie zmienia wartości w kolumnach wszystkie używane do filtrowania.

    • Dodawany jest wiersz do #notbelongs jeśli: w wierszu MSmerge_contents jest aktualizacja zmienia wartość w dowolnej kolumna używane do filtrowania (innymi słowy, przesuwania wiersza do nowej partycji), lub wiersza w MSmerge_tombstone reprezentuje usunięcie wiersza w partycji.

Ostrzeżenie

Nawet jeśli wstępnie obliczone partycje są włączone, SetupBelongs, proces jest używany pierwszy czas subskrypcję synchronizuje Jeśli subskrypcja jest tworzony po innych subskrypcje rozpoczęły odbiera zmiany.