Enhancing Merge Replication Performance
Po rozważeniu wskazówki ogólnej wydajności, opisaną w Zwiększanie wydajności replikacja ogólne, należy wziąć pod uwagę następujące dodatkowe obszary do scalania replikacja.
Projekt bazy danych
Indeks kolumny w wierszu filtry i filtry łączyć.
Podczas filtrowania wierszy są używane w opublikowanego artykuł, należy utworzyć indeks w każdej z kolumn, która jest używana w klauzula WHERE dla filtru.Without an index, Microsoft SQL Server has to read each row in the table to determine whether the row should be included in the partition.Z indeksu SQL Server szybko można znaleźć wiersze, które powinny być uwzględnione. Największą szybkość przetwarzania ma miejsce, jeśli replikacja może pełnego rozwiązania klauzula filtru z indeksu samodzielnie.
Ważne jest również indeksowanie wszystkie kolumny używane w filtrach łączyć.Każdy czas działa agent korespondencji seryjnej, przeszukiwane są tabela bazowa do ustalenia, które wiersze w tabeli nadrzędnej i które wierszy w tabelach pokrewnych są zawarte w partycji.Tworzenie indeksu w kolumnach sprzężonych pozwala uniknąć o SQL Server przy każdym działa agent korespondencji seryjnej, należy zapoznać się z każdego wiersza w tabela.
Aby uzyskać więcej informacji na temat filtrowania Zobacz Filtrowanie opublikowane dane replikacja łączenia.
Należy wziąć pod uwagę overnormalizing tabel, które umożliwia uwzględnienie typów danych Large Object (LOB).
W przypadku wystąpienia synchronizacji agenta korespondencji seryjnej może być konieczne do odczytywania i przeniesienie wierszy danych z Wydawca lub abonenta.Jeśli wiersz zawiera kolumny, które używają LOBs, proces ten może wymaga dodatkowej pamięci alokacji i mieć negatywny wpływ na wydajność, nawet jeśli te kolumny mogły nie zostać zaktualizowane.Aby zmniejszyć prawdopodobieństwo, że występuje ten wpływ na wydajność, należy rozważyć umieszczenie obiektu LOB kolumn w osobnej tabela przy użyciu relacji jeden-do-jednego z pozostałą częścią danych wiersza.Typy danych text, ntext, a image są zaniechana. Jeśli zostanie LOBs, zaleca się korzystanie z typów danych varchar(max), nvarchar(max), varbinary(max), odpowiednio.
Projekt publikacja
Za pomocą publikacja poziom zgodności 90RTM)SQL Server 2005 lub jego nowszej wersja).
Chyba że jeden lub więcej subskrybentów za pomocą innej wersja SQL Server, określ publikacja musi obsługiwać tylko SQL Server 2005 lub nowszy. Dzięki temu publikacja, aby korzystać z nowych funkcji i optymalizacji wydajności.Aby uzyskać więcej informacji zobacz część „ poziom zgodności dla publikacji korespondencji seryjnej „ Using Multiple Versions of SQL Server in a Replication Topology.
Za pomocą ustawienia przechowywania odpowiedniej publikacja.
okres przechowywania publikacja, czyli maksymalny czas, po jakim subskrypcja musi być synchronizowany, decyduje o tym, jak długo przechowywane metadane śledzenia.Wysoka wartość może wpłynąć na wydajność przechowywania i przetwarzania.Aby uzyskać więcej informacji na temat ustawiania okresu przechowywania publikacja Zobacz Data wygaśnięcia subskrypcja i dezaktywacja.
Użyj tylko do pobrania, artykułach w tych tabelach, które są zmieniane tylko w Wydawca.Aby uzyskać więcej informacji zobacz Optymalizowanie wydajności replikacja łączenia z artykułami tylko do pobierania.
Filtr projektu i użyj
Ograniczyć złożoność klauzul filtru wiersza.
Ograniczenia co do złożoności kryteria filtrowania pomaga zwiększyć wydajność podczas scalania Agent oceny ma służyć zmiany wierszy do wysłania do subskrybentów.Należy unikać używania sub-selects w ramach korespondencji seryjnej klauzul filtru wiersza.Zamiast tego należy wziąć pod uwagę przy użyciu filtrów łączyć, które są ogólnie bardziej efektywne z partycji danych w jednej tabela, w oparciu o klauzula filtr wiersza w innej tabela.Aby uzyskać więcej informacji na temat filtrowania Zobacz Filtrowanie opublikowane dane replikacja łączenia.
Partycje precomputed za pomocą sparametryzowanych filtrów (funkcja ta jest używana domyślnie).Aby uzyskać więcej informacji zobacz Optymalizacja sparametryzowana wydajności filtr z Precomputed partycji.
Partycje precomputed nałożyć liczby ograniczeń na filtrowanie zachowanie.Jeśli aplikacja nie pasuje do ograniczenia te zestaw keep_partition_changes Opcja Wartość true, który zapewnia korzyści w wydajności.Aby uzyskać więcej informacji zobacz Sparametryzowana filtry wierszy.
Jeśli dane są filtrowane, ale nie są współużytkowane przez użytkowników za pomocą nonoverlapping partycji.
Replikacja może zoptymalizować wydajność dla danych, które nie są udostępniane między partycje lub subskrypcje.Aby uzyskać więcej informacji zobacz Sparametryzowana filtry wierszy.
Nie należy tworzyć złożone filtr łączenia hierarchii.
Filtry łączyć z pięciu lub więcej tabel może znacznie obniżyć wydajność podczas przetwarzania korespondencji seryjnej.Firma Microsoft zaleca, jeśli jest generowany filtry łączyć pięć lub więcej tabel, należy rozważyć innych rozwiązań:
Należy unikać filtrowanie tabel, które są przede wszystkim tabele przeszukiwania, mniejsze tabele i tabel, które nie mogą ulec zmianie.Wprowadź te tabele części publikacja w całości.Firma Microsoft zaleca korzystanie z filtrów łączyć między tabelami, które muszą być podzielone na partycje między subskrybentów.Aby uzyskać więcej informacji zobacz łączyć Filtry.
Należy wziąć pod uwagę denormalizing projektu bazy danych lub przy użyciu tabela mapowania, w przypadku dużej liczby tabel łączyć.Na przykład jeśli osoba sprzedaży, musi tylko dane dla jej klientów, ale wymaga sześciu sprzężenia, aby skojarzyć klienta z osobą sprzedaży, należy rozważyć dodanie kolumna do tabela klientów, która identyfikuje sprzedawcy.Dane Sprzedawca jest zbędne, ale koszty nieco denormalizing tabel może być zrównoważone przez korzyści wydajności dla replikacja partycjonowanie.
Aby zwiększyć wydajność precomputed partycji, jeśli instancje zawierają wiele zmian w danych, projektowanie aplikacji z ostrożnością.Upewnij się, że zmiany danych w tabela nadrzędnej w filtr łączenia odbywa się przed odpowiednie zmiany w tabelach podrzędność.
zestaw join_unique_key Opcja 1 umożliwia logiczne.
Ustawienie tego parametru na 1 wskazuje, że relacje między podrzędność i jeden-do-jednego lub jeden-do-wielu tabel nadrzędnych w filtrze łączyć.Tylko zestaw ten parametr 1 , jeśli ograniczenie łączących kolumna w tabela podrzędnej, który gwarantuje unikatowość.Jeśli parametr jest ustawiony na 1 nieprawidłowo, może wystąpić brak zbieżności danych.Aby uzyskać więcej informacji zobacz łączyć Filtry.
Aby uniknąć wykonywania partie z wielu zmian, korzystając z partycji precomputed.
Gdy agent korespondencji seryjnej jest uruchamiany po uruchomieniu instancji, która zawiera wiele zmian w danych, agent próbuje dużych partia podzielić na kilka mniejszych porcjach.W tym czasie innych procesów Agent korespondencji seryjnej mogą być blokowane.Rozważ zmniejszenie liczby zmian we wsadzie i uruchom agenta Scal między instancje.Jeśli nie zostanie zakończone, należy zwiększyć wartość generation_leveling_threshold w publikacja.
Uwagi dotyczące subskrypcja
Wymuszenie harmonogramy synchronizacji subskrypcja.
Jeśli duża liczba subskrybentów synchronizacji z Wydawca, należy wziąć pod uwagę rozłożenie harmonogramy, tak aby agenci korespondencji seryjnej w różnym czasie.Aby uzyskać więcej informacji, zobacz:
SQL Server Management Studio: Jak Określ harmonogramy synchronizacji (SQL Server Management Studio)
Replikacja Transact-SQL programowania: Jak Określ harmonogramy synchronizacji (Programowanie replikacja języka Transact-SQL)
Parametry Agent korespondencji seryjnej
Aby uzyskać informacje dotyczące agenta korespondencji seryjnej i jego parametry zobacz Agent replikacja w korespondencji seryjnej.
Uaktualnienie wszystkich subskrybenci subskrypcji ściąganej do SQL Server 2005 lub nowszej wersja.
Uaktualnianie do subskrybent SQL Server 2005 lub jego nowszej wersja uaktualnia Agent korespondencji seryjnej używany przez subskrypcji w tym subskrybent. Aby wykorzystać zalety wielu nowych funkcji i optymalizacji wydajności Agent Scal z SQL Server 2005 lub nowszy jest wymagany.
Jeśli subskrypcja jest synchronizowany za pośrednictwem szybkiego połączenia, a zmiany są wysyłane z Wydawca i subskrybent, należy użyć –ParallelUploadDownload parametr dla agenta korespondencji seryjnej.
SQL Server 2005 wprowadzony nowy parametr agenta korespondencji seryjnej: –ParallelUploadDownload.Ustawienie tego parametru umożliwia scalanie Agent do przetworzenia równolegle zmiany przekazany do Wydawca i tych, które są pobierane do subskrybent.Jest to przydatne w środowiskach dużej o wysokiej przepustowości.Agent parametry można określić w profilach agenta, jak i w wierszu polecenia.Aby uzyskać więcej informacji, zobacz:
Należy rozważyć zwiększenie wartości -MakeGenerationInterval parametr, zwłaszcza wtedy, gdy synchronizacji wymaga więcej wysyła od subskrybentów niż pliki do pobrania do subskrybentów.
Podczas synchronizowania wierszy danych z dużą ilość danych, takich jak wiersze, kolumny LOB synchronizacja w sieci Web można wymaga dodatkowej pamięci alokacji i wówczas wydajności.Ta sytuacja występuje, gdy agent korespondencji seryjnej generuje komunikat XML, który zawiera zbyt wiele wierszy danych z dużą ilością danych.Jeśli Agent Scal zużywa zbyt wiele zasobów podczas synchronizacja w sieci Web, można zmniejszyć liczbę wierszy, wysyłanych w jednej wiadomości w jednej z następujących sposobów:
Korzystanie z profilu agenta powolnego łącza dla agenta korespondencji seryjnej.Aby uzyskać więcej informacji zobacz Replication Agent Profiles.
Zmniejsz -DownloadGenerationsPerBatch and -UploadGenerationsPerBatch parametry dla agenta korespondencji seryjnej do wartości 10 lub mniej.Wartość domyślna tych parametrów jest 50.
Uwagi dotyczące migawka
Tworzenie kolumna ROWGUIDCOL w dużych tabelach przed do generowania migawka początkowa.
replikacja łączenia wymaga, aby każda tabela opublikowanych miały ROWGUIDCOL kolumna.Jeśli kolumna ROWGUIDCOL nie tabela, zanim migawka Agent tworzy pliki początkowego migawka, agent musi najpierw dodać i wypełnić kolumnę ROWGUIDCOL.Do uzyskania nad wydajność podczas generowania migawek podczas scalania replikacja, należy utworzyć kolumna ROWGUIDCOL w każdej tabela przed publikowaniem.kolumna może mieć żadnych (nazwaROWGUID jest używana przez agenta migawka domyślnie), ale musi mieć typ właściwości następujących danych:
Typ danych UNIQUEIDENTIFIER.
Domyślnie NEWSEQUENTIALID() lub NEWID().NEWSEQUENTIALID() jest zalecane, ponieważ zapewnia on zwiększyć wydajność podczas wprowadzania i śledzenia zmian.
Zestaw właściwość ROWGUIDCOL.
Indeks unikatowy oparty na kolumnie.
Wstępnie wygenerować migawek i/lub pozostawić subskrybentów do generowania migawka żądanie i aplikacji w pierwszym czas 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.
Konserwacja i zagadnienia dotyczące monitorowania
Od czasu do czasu Reindeksacja tabele systemowe replikacja łączenia.
Jako część obsługi scalania replikacja od czasu do czasu sprawdzać wzrostu tabele systemowe, skojarzone z replikacja łączenia: MSmerge_contents, MSmerge_genhistory, and MSmerge_tombstone, MSmerge_current_partition_mappings, and MSmerge_past_partition_mappings.Co pewien czas ponownie indeksować tych tabel.Aby uzyskać więcej informacji zobacz Reorganizing and Rebuilding Indexes.
Za pomocą monitora synchronizacji wydajności Historia synchronizacji karcie Monitor replikacja.
Do replikacja łączenia replikacja monitor wyświetla szczegółowe dane statystyczne w Historia synchronizacji kartę dla każdego artykuł przetworzonych w trakcie synchronizacji, włączając w to ilość czas spędzonego na każdej z faz przetwarzania (przekazywanie zmian, pobieranie zmian i tak dalej).Pomagają precyzyjnie wskazać konkretnych tabel, które są przyczyną wolno downs i jest najlepszym miejscem do rozwiązywania problemów z wydajnością z subskrypcjami korespondencji seryjnej.Aby uzyskać więcej informacji dotyczących przeglądania szczegółowych statystyk Zobacz Jak Służy do wyświetlania informacji i wykonuje zadania dla agentów skojarzony Z subskrypcja (Monitor replikacja).