Monitoring the Change Data Capture Process
Monitorowanie procesu przechwytywania danych w zmiany pozwala określić, jeśli zmiany są zapisywane poprawnie i z odpowiednim opóźnienie w tabelach zmiany.Monitoring can also help you to identify any errors that might occur.SQL Server includes two dynamic management views to help you monitor change data capture:
-
Widok zarządzania sys.dm_cdc_log_scan_sessions zawiera jeden wiersz dla każdej sesja dziennika skanowania w bieżącej bazie danych.W ostatnim wierszu reprezentuje bieżącą sesja.Widok zawiera także wiersza o identyfikatorze sesja 0, co ma zagregowane informacje dotyczące wszystkich sesja od momentu wystąpienie programu SQL Server ostatniego uruchomienia.
-
Widok zarządzania sys.dm_cdc_errors zawiera jeden wiersz dla każdego błędu, który napotka podczas sesja zmiany danych przechwytywania dziennika skanowania.
Identyfikacja sesji z pustych zestawy wyników
Każdy wiersz w sys.dm_cdc_log_scan_sessions reprezentuje sesja dziennika skanowania (z wyjątkiem wiersza z IDENTYFIKATOREM 0).Sesja dziennika skanowania jest odpowiednikiem wykonanie jednej sp_cdc_scan.W trakcie sesja skanowania może zwracać zmian albo zwracają wyniki puste.Jeśli zestaw wyników jest puste, kolumna empty_scan_count w sys.dm_cdc_log_scan_sessions jest ustawiona na 1.W przypadku kolejnych puste zestawy wyników, takie jak w przypadku zadanie przechwytywania jest ciągle uruchomiony, empty_scan_count w ostatnim wierszu istniejących jest zwiększany o jeden.Na przykład sys.dm_cdc_log_scan_sessions zawiera już 10 wierszy do skanowania, który zwrócił zmiany są pięciu wyniki pustego wiersza, widok zawiera wiersze 11.Ostatni wiersz ma wartość 5 kolumna empty_scan_count.Aby określić sesje, które miały puste skanowania, uruchom następującą kwerendę:
SELECT * from sys.dm_cdc_log_scan_sessions where empty_scan_count <> 0
Określanie opóźnienie
Widok zarządzania sys.dm_cdc_log_scan_sessions zawiera kolumna, która rejestruje opóźnienie dla każdej sesja przechwytywania.opóźnienie jest definiowana jako czas upływający między transakcja zostanie zatwierdzona w urządzenie źródłowe tabela i ostatniej przechwyconej transakcji jest zatwierdzony w tabela Zmiana.kolumna opóźnienie jest wypełniane tylko dla aktywnych sesji.Dla sesji o wartości większej niż 0 kolumna empty_scan_count kolumna opóźnienie jest równa 0.Następująca kwerenda zwraca średni opóźnienie dla ostatniej sesji:
SELECT latency FROM sys.dm_cdc_log_scan_sessions WHERE session_id = 0
opóźnienie danych służy do określenia, jak szybko lub wolno proces przechwytywania jest przetwarzania transakcji.Te dane jest najbardziej użyteczna, gdy proces przechwytywania jest ciągle uruchomiony.Jeśli proces przechwytywania działa zgodnie z harmonogramem, opóźnienie może być wysoka ze względu na opóźnienia między transakcjami jest zatwierdzony w tabela źródłowej i proces przechwytywania uruchomione w zaplanowanym terminie.
Innym środkiem ważne wydajności proces przechwytywania jest przepustowość.Jest to średnia liczba poleceń na sekundę, które są przetwarzane podczas każdej sesja.Aby określić przepustowość sesja, podzielić wartości kolumna command_count przez wartość kolumna okres.Następująca kwerenda zwraca średnią przepływność dla ostatniej sesji:
SELECT command_count/duration AS [Throughput] FROM sys.dm_cdc_log_scan_sessions WHERE session_id = 0
Za pomocą modułu zbierającego dane do zbierania danych próbkowanie
The SQL Server data collector lets you collect snapshots of data from any tabela or dynamiczny widok zarządzania and build a performance magazyn danych. Podczas przechwytywania danych zmian jest włączona dla bazy danych, warto wykonać migawki widoku sys.dm_cdc_log_scan_sessions i widoku sys.dm_cdc_errors w regularnych odstępach czasu w celu późniejszej analizy.Poniższa procedura konfiguruje moduł zbierający dane do zbierania danych przykładowych z widoku zarządzania sys.dm_cdc_log_scan_sessions.
Konfigurowanie danych kolekcja
Włącz moduł zbierający dane i skonfiguruj zarządzania magazyn danych.Aby uzyskać więcej informacji zobaczManaging Data Collection Using SQL Server Management Studio.
Należy wykonać poniższy kod, aby utworzyć niestandardowy moduł zbierający do przechwytywania danych zmian.
USE msdb; DECLARE @schedule_uid uniqueidentifier; -- Collect and upload data every 5 minutes SELECT @schedule_uid = ( SELECT schedule_uid from sysschedules_localserver_view WHERE name = N'CollectorSchedule_Every_5min') DECLARE @collection_set_id int; EXEC dbo.sp_syscollector_create_collection_set @name = N' CDC Performance Data Collector', @schedule_uid = @schedule_uid, @collection_mode = 0, @days_until_expiration = 30, @description = N'This collection set collects CDC metadata', @collection_set_id = @collection_set_id output; -- Create a collection item using statistics from -- the change data capture dynamic management view. DECLARE @paramters xml; DECLARE @collection_item_id int; SELECT @paramters = CONVERT(xml, N'<TSQLQueryCollector> <Query> <Value>SELECT * FROM sys.dm_cdc_log_scan_sessions</Value> <OutputTable>cdc_log_scan_data</OutputTable> </Query> </TSQLQueryCollector>'); EXEC dbo.sp_syscollector_create_collection_item @collection_set_id = @collection_set_id, @collector_type_uid = N'302E93D1-3424-4BE7-AA8E-84813ECF2419', @name = ' CDC Performance Data Collector', @frequency = 5, @parameters = @paramters, @collection_item_id = @collection_item_id output; GOW SQL Server Management Studio, rozwiń węzeł Zarządzanie, a następnie rozwiń Dane kolekcja.Kliknij prawym przyciskiem myszy Moduł zbierający dane wydajności CDC, a następnie kliknij przycisk Uruchom zestaw zbierania danych.
W magazynie danych skonfigurowane w kroku 1 zlokalizuj custom_snapshots.cdc_log_scan_data tabela.Ta tabela zawiera historyczne migawkę danych z dziennika skanowania sesji.Dane te można używać do analizowania opóźnienie, przepustowość i inne środki wydajność w czasie.