Enhancing General Replication Performance
Ogólnej wydajności dla wszystkich typów replikacja może zwiększyć w aplikacji i w sieci przy użyciu wytycznych, opisane w tym temacie.
Serwer i sieć
Set the minimum and maximum amount of memory allocated to Microsoft SQL Server Database Engine.
Domyślnie Database Engine zmienia jego wymagania dotyczące pamięci dynamicznie oparta na dostępnych zasobów systemowych. Aby uniknąć braku pamięci dostępność podczas działania replikacja, należy użyć pamięć serwera min możliwość zestaw minimalną ilość dostępnej pamięci.Aby uniknąć strona systemu operacyjnego na dysku do pamięci, można także zestaw maksymalną ilość pamięci z Maksymalna pamięć opcji.Aby uzyskać więcej informacji zobacz Server Memory Options.
Zapewnienia właściwego podziału bazy danych, plików danych i plików dziennika.Za pomocą osobnego dysku dla dziennik transakcji dla wszystkich baz danych biorących udział w replikacja.
Można zmniejszyć czas zapisu transakcji dzięki przechowywaniu plików dziennika na dysku innym niż ten, który jest używany do przechowywania w bazie danych.Można dublować tego dysku przy użyciu Redundant Array z niedrogie dysków (RAID) -1, jeśli wymagana jest odporność na uszkodzenia.W przypadku innych plików bazy danych za pomocą RAID 0 lub 1 0 + (w zależności od potrzeby dla zapewnienia odporności na uszkodzenia).To jest dobrą praktyką, niezależnie od tego, niezależnie od tego, czy replikacja jest używana.Aby uzyskać więcej informacji zobacz RAID Levels and SQL Server.
Należy rozważyć dodanie pamięci do serwerów używanych w replikacja, szczególnie dystrybutor.
Za pomocą komputerów wieloprocesorowych.
Agenci replikacja można skorzystać z dodatkowych procesorów na serwerze.Jeśli są uruchomione na obciążenia PROCESORA, należy rozważyć zainstalowanie szybszego PROCESORA lub wielu procesorów.
Za pomocą szybkiej sieci.
Sieć może być wąskiego gardła wydajności znaczące, szczególnie w przypadku replikacja transakcyjnej.Propagacji zmiany subskrybenci mogą znacznie rozszerzona za pomocą szybkiej sieci 100 megabitów na sekundę (MB/S) lub szybszy.Jeśli sieć jest powolne, należy określić odpowiednią siecią, ustawienia i parametry agenta.Aby uzyskać więcej informacji zobacz A Slow Network Is Causing Problems.
Projekt bazy danych
Należy uwzględnić najważniejsze wskazówki dotyczące projektowania bazy danych.
Zreplikowanej bazy danych zazwyczaj korzyści z tego samego optymalizacji wydajności bazy danych nie są replikowane.Jednak indeksy należy używać z rozwagą przez subskrybent: powinna być indeksowana kolumna klucz podstawowy przez subskrybent, ale dodatkowe indeksy mogą mieć wpływ na wstawianie, aktualizowanie i usuwanie wydajności. Aby uzyskać więcej informacji dotyczących optymalizacji bazy danych zobacz Optymalizacja bazy danych.
Należy rozważyć ustawienie opcji READ_COMMITTED_SNAPSHOT bazy danych.
W celu zmniejszenia rywalizacji między aktywności użytkownika i działania agenta replikacja, zestaw tej opcji publikacja i subskrypcja baz danych:
ALTER DATABASE AdventureWorks SET READ_COMMITTED_SNAPSHOT ON
Aby uzyskać więcej informacji zobacz ALTER DATABASE języka Transact-SQL).
Należy zachować ostrożność w logice aplikacji w wyzwalaczy.
logika biznesowa w zdefiniowanej przez użytkownika wyzwalaczy subskrybent może spowolnić replikacja zmian subskrybenta:
Dla replikacja transakcyjnej może być bardziej efektywne, aby dołączyć tę logikę niestandardowych procedur przechowywanych, wykorzystywany przy stosowaniu polecenia replikowanych.Aby uzyskać więcej informacji zobacz Określanie, jak zmiany są rozpropagowane dla transakcji artykułów.
Do replikacja łączenia może być bardziej efektywnego używania programów obsługi logika biznesowa.Aby uzyskać więcej informacji zobacz Wykonywanie logika biznesowa podczas synchronizowania korespondencji seryjnej.
Jeśli jest używany przez subskrybent wyzwalaczy, zobacz następujące tematy, aby uzyskać więcej informacji: Kontrolowanie ograniczenia tożsamości i wyzwalaczy z nie dla replikacja i Zagadnienia dotyczące replikacja transakcji. Aby zachować więzy integralność w tabelach opublikowane dla replikacja łączenia używając wyzwalaczy, należy określić kolejność przetwarzania tabel, aby zmniejszyć liczbę ponownych prób wymagane dla agenta korespondencji seryjnej.Aby uzyskać więcej informacji zobacz Określanie kolejność przetwarzania artykułów korespondencji seryjnej.
Ogranicz używanie typów danych Large Object (LOB).
LOBs wymagają więcej miejsca do magazynowania i przetwarzania niż inne typy danych kolumn.Nie powinno obejmować kolumny te artykuły o ile niezbędne dla danej aplikacji.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.
Dla replikacja transakcyjnej wziąć pod uwagę przy użyciu profilu Agent dystrybucji o nazwie Profil dystrybucji do przesyłania strumieniowego OLEDB.Aby uzyskać więcej informacji zobacz Replication Agent Profiles.
Projekt publikacja
Opublikować tylko te dane, które są wymagane.
Ponieważ replikacja jest łatwa do konfigurowania, nie ma tendencję do publikowania więcej danych niż aktualnie wymagane jest.Zajmowane są dodatkowe zasoby w obrębie bazy danych, dystrybucji i pliki migawka i mogą obniżać przepustowość dla wymaganych danych.Unikaj publikowania zbędne tabele i aktualizowanie publikacje mniej często należy wziąć pod uwagę.
Minimalizowanie konfliktów przez zachowanie publikacja projektu i aplikacji.
Następujące typy replikacja Zezwalaj na dane, które mają zostać zmienione na subskrybenci: replikacja łączenia, replikacja transakcyjnej z subskrypcjami poddający się aktualizacji i replikacja transakcyjnej typu peer-to-peer. replikacja łączenia i replikacja transakcyjnej z subskrypcjami można aktualizować obsługuje konflikty danych, jeśli dany wiersz zostanie zaktualizowany na więcej niż jeden węzeł między synchronizacji.replikacja równorzędna nie obsługuje konflikty danych, muszą być podzielone na partycje zmian danych.Niezależnie od typu używanych replikacja zaleca się podzielić zmian, o ile to możliwe, ponieważ zmniejsza to przetwarzanie wymagane do wykrycia konfliktów i rozdzielczości.
Zmiany mogą być podzielone na partycje poprzez publikacji podzbiór danych do każdego subskrybent lub poprzez bezpośrednie zmian aplikacji dla danego wiersza na danym węźle:
Scalanie replikacja obsługuje publikowania podzbiór danych przy użyciu filtrów sparametryzowana z jednej publikacja.Aby uzyskać więcej informacji zobacz Sparametryzowana filtry wierszy.
replikacja transakcyjnej obsługuje publikowania podzbiór danych przy użyciu statycznych filtrów z wiele publikacji.Aby uzyskać więcej informacji zobacz Filtrowanie opublikowane dane.
Za pomocą filtrów wiersza judiciously.
Podczas transakcyjnych publikacja zawiera jeden lub więcej artykułów, które za pomocą filtrów wiersza, Agent odczytywania dziennika musi zastosować filtr do każdego wiersza, dotyczy przez aktualizację do tabela, ponieważ skanuje dziennik transakcji.Przepustowość Agent odczytywania dziennika w związku z tym podlega usterce.
Podobnie replikacja łączenia musi być zmienione lub usunięte wiersze do określenia subskrybentów, którzy mają otrzymywać tych wierszy.Gdy wiersza filtry są wykorzystywane do zmniejszenia dane wymagane na subskrybent, to przetwarzanie jest bardziej złożona i może być wolniejsze niż po opublikowaniu wszystkich wierszy w tabela.Należy rozważyć zależnościami między wymagania dotyczące magazynu obniżoną w każdym subskrybent i potrzebę uzyskania maksymalnej przepustowości.Aby uzyskać więcej informacji na temat filtrowania Zobacz Filtrowanie opublikowane dane.
Uwagi dotyczące subskrypcja
Użycie ściągać subskrypcji, gdy istnieje duża liczba subskrybentów.
Agent dystrybucji i scalanie Agent uruchamiane na dystrybutor dla subskrypcji wypychanych i na subskrybentów dla ściągać subskrypcji.Korzystanie z subskrypcji ściąganej może zwiększyć wydajność, przenosząc przetwarzanie dystrybutor do subskrybentów agenta.Aby uzyskać więcej informacji zobacz Subskrybowanie publikacji.
Jeśli subskrybentów jest zbyt daleko zaporą, należy wziąć pod uwagę reinicjowanie subskrypcja.
Przy dużych ilości zmiany muszą być wysyłane do subskrybentów, reinitializing je z nowym migawka może być szybsza niż przy użyciu replikacja, aby przenieść poszczególne zmiany.Aby uzyskać więcej informacji zobacz Reinitializing subskrypcja.
Dla replikacja transakcyjnej Monitor replikacja, wyświetla na Nieprzydzielone polecenia informacji z karty, które dotyczą: Liczba transakcji w bazie danych dystrybucji, które zostały nie zostały jeszcze przekazane do subskrybent; oraz szacowany czas dystrybucji tych transakcji. Aby uzyskać więcej informacji zobacz Jak Służy do wyświetlania informacji i wykonuje zadania dla agentów skojarzony Z subskrypcja (Monitor replikacja).
Uwagi dotyczące migawka
Uruchom agenta Migawka tylko wtedy, gdy to konieczne, a w godzinach poza szczytem.
Zbiorcza migawka Agent kopiuje dane z opublikowanych tabela na Wydawca do pliku znajdującego się w folderze migawka na dystrybutor.Generowanie Migawka może być procesem intensywne zasób i najlepiej jest planowany w godzinach poza szczytem.
Użyj trybu macierzystego migawkę, chyba że wymagana jest migawka Tryb znaków.
Użyj domyślnego trybu macierzystego migawka do wszystkich subskrybentów, z wyjątkiem innych niż-SQL Server Subskrybenci i systemem subskrybentów SQL Server Compact 3.5 SP1, które wymagają tryb znakowy migawka.
Użyj folderu jednej migawka dla publikacja.
Podczas określania właściwości publikacja powiązanych z lokalizacji migawka, można wygenerować migawkę plików w domyślnym folderze migawka, do folderu alternatywnego migawka lub do obu firm.Generowanie migawkę plików w obu lokalizacjach wymaga dodatkowego miejsca na dysku i inne przetwarzanie podczas wykonywania migawka agenta.
Lokalizację folderu migawka na dysku lokalnym na Dystrybutor, który nie jest używany do przechowywania bazy danych lub plików dziennika.
migawka Agent wykonuje kolejne zapisu danych w folderze migawka.Wprowadzenie do folderu migawka oddzielnego dysku wszystkie pliki bazy danych lub dziennika zmniejsza rywalizacji między dysków i ułatwia szybsze przetwarzanie pełną migawkę.
Po utworzeniu baza danych subskrypcja przez subskrybent, należy rozważyć, określając model odzyskiwanie prostych lub zarejestrowane zbiorczej.Umożliwia to minimalny rejestrowania wstawia zbiorczej wykonywane podczas stosowania migawka przez subskrybent.Po zastosowaniu migawkę baza danych subskrypcja, można zmienić na inny model odzyskiwanie w razie potrzeby (zreplikowane bazy danych można użyć dowolnej z model odzyskiwanie s).Aby uzyskać więcej informacji na temat zaznaczania modelu odzyskiwanie Zobacz Restore and Recovery Overview (SQL Server).
Warto rozważyć użycie migawka alternatywnego folderu i migawek skompresowanych nośników wymiennych dla małej przepustowości sieci.
Kompresja migawkę plików w folderze migawka alternatywny może zmniejszyć wymagania dotyczące magazynowania dysku migawka i ułatwić do transferu plików migawka na nośniku wymiennym.
Skompresowane migawka w niektórych przypadkach zwiększyć wydajność przesyłania migawkę plików przez sieć.Jednak kompresja migawka wymaga dodatkowych przetwarzania przez agenta migawka podczas generowania plików migawka i dystrybucji Agent lub Scal Agent podczas stosowania plików migawka.Może to spowolnić niedziałający migawkę generowania i zwiększyć czas potrzebny do zastosowania migawkę w niektórych przypadkach.Ponadto nie można wznowić skompresowanych migawek, jeśli wystąpi awaria sieci, w związku z tym nie są odpowiednie dla sieci zawodne.Należy rozważyć następujące tradeoffs podczas używania migawek skompresowane przez sieć.Aby uzyskać więcej informacji zobacz Alternatywnej lokalizacji folderu migawka i Skompresowane migawki.
Należy wziąć pod uwagę ręczne inicjowanie subskrypcja.
W niektórych scenariuszach, takich jak te dotyczące wstępnego dużych zestawów danych zaleca się zainicjować subskrypcję, za pomocą metod innych niż migawka.Aby uzyskać więcej informacji zobacz Inicjowanie transakcji subskrypcja bez migawka i Inicjowanie subskrypcja korespondencji seryjnej bez migawka.
Parametry agenta
Zmniejsz poziomy verbose agentów replikacja, z wyjątkiem podczas wstępnego testowania monitorowania i debugowania.
Zmniejsz –HistoryVerboseLevel Parametr a –OutputVerboseLevel parametr agenci dystrybucji lub agenci korespondencji seryjnej.Zmniejsza to liczbę nowe wiersze wstawione do śledzenia historia agenta i dane wyjściowe.Zamiast tego poprzednich komunikatach historia o takim samym statusie są aktualizowane w taki sposób, aby nowe informacje o historia.Zwiększ verbose poziomów do testowania, monitorowania i debugowanie, aby zachować jak najwięcej informacji na temat działania agenta, jak to możliwe.
Użycie –MaxBCPThreads parametr agenta migawka, Agent korespondencji seryjnej i agenta dystrybucji (liczba określonych wątków nie może przekraczać liczby procesorów w komputerze).Ten parametr określa liczbę kopii operacje zbiorcze, które mogą być wykonywane równolegle, gdy migawka jest tworzony i stosowane.
Użycie –UseInprocLoader parametr agenta dystrybucji i scalanie Agent (ten parametr nie można używać, jeśli opublikowanych tabel dołączyć kolumny XML).Ten parametr powoduje, że agent polecenia BULK INSERT po zastosowaniu migawka.
Agent parametry można określić w profilach agenta, jak i w wierszu polecenia.Aby uzyskać więcej informacji, zobacz: