Udostępnij za pośrednictwem


Zbieranie danych i zestawy danych obserwatora bazy danych (wersja zapoznawcza)

Dotyczy: Azure SQL Database Azure SQL Managed Instance

Obserwator bazy danych zbiera dane monitorowania z widoków systemu SQL i pobiera je do magazynu danych w postaci zestawów danych. Każdy zestaw danych jest tworzony przy użyciu danych z co najmniej jednego widoku systemu SQL. Dla każdego zestawu danych znajduje się oddzielna tabela w magazynie danych.

Zbieranie danych

Obserwator bazy danych zbiera dane monitorowania w okresowych odstępach czasu przy użyciu zapytań T-SQL. Dane zebrane w każdym wykonaniu zapytania są nazywane przykładem. Częstotliwość zbierania przykładów różni się w zależności od zestawu danych. Na przykład często zmieniające się dane, takie jak liczniki wydajności SQL, mogą być zbierane co 10 sekund, podczas gdy najczęściej statyczne dane, takie jak konfiguracja bazy danych, mogą być zbierane co pięć minut. Aby uzyskać więcej informacji, zobacz Zestawy danych.

Obserwator bazy danych korzysta z pozyskiwania danych przesyłanych strumieniowo w usłudze Azure Data Explorer i analizy w czasie rzeczywistym w usłudze Microsoft Fabric w celu zapewnienia monitorowania niemal w czasie rzeczywistym. Zazwyczaj zebrane dane monitorowania SQL stają się dostępne do raportowania i analizy w mniej niż 10 sekund. Opóźnienie pozyskiwania danych można monitorować na pulpitach nawigacyjnych obserwatora bazy danych przy użyciu linku Statystyki pozyskiwania.

Interakcja między obserwatorem bazy danych a obciążeniami aplikacji

Włączenie obserwatora bazy danych nie może mieć zauważalnego wpływu na obciążenia aplikacji. Częstsze zapytania monitorowania zwykle są wykonywane w zakresie sekund podrzędnych, natomiast zapytania, które mogą wymagać więcej czasu, na przykład w celu zwrócenia dużych zestawów danych, są uruchamiane w rzadkich odstępach czasu.

Aby jeszcze bardziej zmniejszyć ryzyko wpływu na obciążenia aplikacji, wszystkie zapytania obserwatora bazy danych w usłudze Azure SQL Database są zarządzane jako obciążenie wewnętrzne. Gdy rywalizacja o zasoby jest obecna, użycie zasobów przez zapytania monitorowania jest ograniczone do niewielkiej części całkowitych zasobów dostępnych dla bazy danych lub elastycznej puli. Określa to priorytety obciążeń aplikacji w przypadku zapytań monitorowania.

W usłudze Azure SQL Managed Instance możesz włączyć zarządcę zasobów, aby zarządzać zużyciem zasobów przez zapytania monitorowania w podobny sposób, w razie potrzeby.

Poniższy przykład umożliwia skonfigurowanie zarządcy zasobów w wystąpieniu zarządzanym SQL. Ogranicza użycie procesora CPU przez zapytania obserwatora bazy danych do 30%, gdy nie ma rywalizacji o procesor. W przypadku rywalizacji o procesor CPU ta konfiguracja rezerwuje 5% procesora CPU na potrzeby zapytań monitorowania i ogranicza użycie procesora CPU do 10%. Ogranicza również rozmiar przydziału pamięci dla każdego zapytania monitorowania do 10% dostępnej pamięci.

USE master;
GO

CREATE OR ALTER FUNCTION dbo.dbw_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN

DECLARE @WorkloadGroupName sysname = 'default';

IF APP_NAME() IN (N'SQLExternalMonitoring',N'x_ms_reserved_sql_external_monitoring')
    SET @WorkloadGroupName = N'database_watcher_workload_group'

RETURN @WorkloadGroupName;

END;
GO

BEGIN TRY

IF EXISTS (
          SELECT 1
          FROM sys.resource_governor_configuration
          WHERE classifier_function_id <> 0 OR is_enabled <> 0
          )
    THROW 50001, 'Resource Governor is already configured. No changes were made.', 1;

CREATE RESOURCE POOL database_watcher_resource_pool
WITH (MIN_CPU_PERCENT = 5, MAX_CPU_PERCENT = 10, CAP_CPU_PERCENT = 30);

CREATE WORKLOAD GROUP database_watcher_workload_group
WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10)
USING database_watcher_resource_pool;

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.dbw_classifier);

ALTER RESOURCE GOVERNOR RECONFIGURE;

END TRY
BEGIN CATCH
    THROW;
END CATCH;

Uwaga

Aby konfiguracja zarządcy zasobów natychmiast obowiązywała w pomocniczej repliki wystąpienia zarządzanego SQL o wysokiej dostępności, połącz się z repliką i wykonaj polecenie ALTER RESOURCE GOVERNOR RECONFIGURE;.

Aby uniknąć konfliktów współbieżności, takich jak blokowanie i zakleszczenia między obciążeniami zbierania danych i baz danych uruchomionymi w zasobach usługi Azure SQL, monitorowanie zapytań używa krótkich limitów czasu blokady i niskiego priorytetu zakleszczenia. Jeśli występuje konflikt współbieżności, priorytet jest przypisywany zapytaniom obciążenia aplikacji. W zależności od wzorców obciążeń aplikacji może to spowodować sporadyczne luki w zebranych danych dla niektórych zestawów danych.

Zbieranie danych w elastycznych pulach

Aby monitorować pulę elastyczną, należy wyznaczyć jedną bazę danych w puli jako bazę danych kotwicy. Obserwator bazy danych łączy się z bazą danych kotwicy. Ponieważ obserwator przechowuje VIEW SERVER PERFORMANCE STATE uprawnienie, widoki systemowe w bazie danych kotwicy zapewniają dane monitorowania dla całej puli.

Napiwek

Pustą bazę danych można dodać do każdej elastycznej puli, którą chcesz monitorować, i wyznaczyć ją jako bazę danych kotwicy. Dzięki temu można przenosić inne bazy danych do i z puli lub między pulami bez przerywania monitorowania elastycznej puli.

Dane zebrane z bazy danych kotwicy zawierają metryki na poziomie puli oraz niektóre metryki wydajności na poziomie bazy danych dla każdej bazy danych w puli. Dotyczy to na przykład metryk użycia zasobów i liczby żądań dla każdej bazy danych. W niektórych scenariuszach monitorowanie elastycznej puli jako całości sprawia, że monitorowanie poszczególnych baz danych w puli jest niepotrzebne.

Niektóre dane monitorowania, takie jak użycie procesora CPU na poziomie puli, pamięci i magazynu, i statystyki oczekiwania są zbierane tylko na poziomie puli elastycznej, ponieważ nie można przypisać jej do pojedynczej bazy danych w puli. Z drugiej strony niektóre inne dane, takie jak statystyki środowiska uruchomieniowego zapytań, właściwości bazy danych, tabele i metadane indeksu, są dostępne tylko na poziomie bazy danych.

W przypadku dodawania pojedynczych baz danych z elastycznej puli jako obiektów docelowych obserwatora bazy danych należy również dodać pulę elastyczną jako docelową. Dzięki temu uzyskasz bardziej pełny widok wydajności bazy danych i puli.

Monitorowanie gęstych elastycznych pul

Gęsta elastyczna pula zawiera dużą liczbę baz danych, ale ma stosunkowo mały rozmiar obliczeniowy. Ta konfiguracja pozwala klientom uzyskać znaczne oszczędności kosztów dzięki zachowaniu alokacji zasobów obliczeniowych do minimum przy założeniu, że tylko niewielka liczba baz danych w puli jest aktywna w tym samym czasie.

Zasoby obliczeniowe dostępne dla zapytań obserwatora bazy danych w gęstej elastycznej puli są dodatkowo ograniczone, aby uniknąć wpływu na zapytania aplikacji. W związku z tym obserwator bazy danych może nie być w stanie zbierać danych monitorowania z każdej bazy danych w gęstej elastycznej puli.

Napiwek

Aby monitorować gęstą elastyczną pulę, włącz monitorowanie na poziomie puli, dodając elastyczną pulę jako docelową.

Nie zaleca się monitorowania więcej niż kilku pojedynczych baz danych w gęstej elastycznej puli. Mogą wystąpić luki w zebranych danych lub większe niż oczekiwano interwały między próbkami danych z powodu niewystarczającej ilości zasobów obliczeniowych dostępnych dla zapytań obserwatora bazy danych.

Zestawy danych

W tej sekcji opisano zestawy danych dostępne dla każdego typu docelowego, w tym częstotliwości kolekcji i nazwy tabel w magazynie danych.

Uwaga

Podczas korzystania z wersji zapoznawczej zestawy danych mogą być dodawane i usuwane. Właściwości zestawu danych, takie jak nazwa, opis, częstotliwość kolekcji i dostępne kolumny, mogą ulec zmianie.

Nazwa zestawu danych Nazwa tabeli Częstotliwość kolekcji (hh:mm:ss) opis
Aktywne sesje sqldb_database_active_sessions 00:00:30 Każdy wiersz reprezentuje sesję, która uruchamia żądanie, jest blokerem lub ma otwartą transakcję.
Historia kopii zapasowych sqldb_database_sql_backup_history 00:05:00 Każdy wiersz reprezentuje pomyślnie ukończoną kopię zapasową bazy danych.
Przetwarzanie zmian sqldb_database_change_processing 00:01:00 Każdy wiersz reprezentuje migawkę zagregowanych statystyk skanowania dzienników dla funkcji przetwarzania zmian, takiej jak Przechwytywanie zmian danych lub Zestawienie zmian (Azure Synapse Link).
Błędy przetwarzania zmian sqldb_database_change_processing_errors 00:01:00 Każdy wiersz reprezentuje błąd, który wystąpił podczas przetwarzania zmian, podczas korzystania z funkcji przetwarzania zmian, takiej jak Przechwytywanie zmian danych lub Zestawienie zmian (Azure Synapse Link).
Łączność sqldb_database_connectivity 00:00:30 Każdy wiersz reprezentuje sondę łączności (identyfikator logowania i zapytanie) dla bazy danych.
Repliki geograficzne sqldb_database_geo_replicas 00:00:30 Każdy wiersz reprezentuje replikę podstawową lub pomocniczą replikę geograficzną, w tym metadane i statystyki replikacji geograficznej.
Metadane indeksu sqldb_database_index_metadata 00:30:00 Każdy wiersz reprezentuje partycję indeksu i zawiera definicję indeksu, właściwości i statystyki operacyjne.
Wykorzystanie pamięci sqldb_database_memory_utilization 00:00:10 Każdy wiersz reprezentuje urzędnika pamięci i obejmuje użycie pamięci przez urzędnika w wystąpieniu aparatu bazy danych.
brakujące indeksy, sqldb_database_missing_indexes 00:15:00 Każdy wiersz reprezentuje indeks, który może poprawić wydajność zapytań w przypadku utworzenia.
Zdarzenia poza pamięcią sqldb_database_oom_events 00:01:00 Każdy wiersz reprezentuje zdarzenie poza pamięcią w aucie bazy danych.
Liczniki wydajności (wspólne) sqldb_database_performance_counters_common 00:00:10 Każdy wiersz reprezentuje licznik wydajności wystąpienia aparatu bazy danych. Ten zestaw danych zawiera często używane liczniki.
Liczniki wydajności (szczegółowe) sqldb_database_performance_counters_detailed 00:01:00 Każdy wiersz reprezentuje licznik wydajności wystąpienia aparatu bazy danych. Ten zestaw danych zawiera liczniki, które mogą być potrzebne do szczegółowego monitorowania i rozwiązywania problemów.
Właściwości sqldb_database_properties 00:05:00 Każdy wiersz reprezentuje bazę danych i zawiera opcje bazy danych, limity ładu zasobów i inne metadane bazy danych.
Statystyki środowiska uruchomieniowego zapytań sqldb_database_query_runtime_stats 00:15:00 Każdy wiersz reprezentuje interwał środowiska uruchomieniowego magazynu zapytań i zawiera statystyki wykonywania zapytań.
Statystyki oczekiwania zapytań sqldb_database_query_wait_stats 00:15:00 Każdy wiersz reprezentuje interwał środowiska uruchomieniowego magazynu zapytań i zawiera statystyki kategorii oczekiwania.
Repliki sqldb_database_replicas 00:00:10 Każdy wiersz reprezentuje replikę bazy danych, w tym metadane replikacji i statystyki. Zawiera replikę podstawową i repliki geograficzne podczas zbierania replik podstawowych i pomocniczych w przypadku zbierania ich w pomocniczym obiekcie pomocniczym.
Wykorzystanie zasobów sqldb_database_resource_utilization 00:00:15 Każdy wiersz reprezentuje procesor CPU, we/wy danych, we/wy dziennika i inne statystyki użycia zasobów dla bazy danych w interwale czasu.
Statystyki sesji sqldb_database_session_stats 00:01:00 Każdy wiersz reprezentuje podsumowanie statystyk sesji dla bazy danych, agregowane przez atrybuty sesji nie addytywne, takie jak nazwa logowania, nazwa hosta, nazwa aplikacji itp.
Harmonogramy SOS sqldb_database_sos_schedulers 00:01:00 Każdy wiersz reprezentuje harmonogram SOS i zawiera statystyki dotyczące harmonogramu, węzła procesora CPU i węzła pamięci.
We/wy magazynu sqldb_database_storage_io 00:00:10 Każdy wiersz reprezentuje plik bazy danych i zawiera skumulowane statystyki liczby operacji we/wy na sekundę, przepływności i opóźnienia dla pliku.
Wykorzystanie magazynu sqldb_database_storage_utilization 00:01:00 Każdy wiersz reprezentuje bazę danych i zawiera jej użycie magazynu, w tym tempdbmagazyn zapytań i magazyn trwałych wersji.
Metadane tabeli sqldb_database_table_metadata 00:30:00 Każdy wiersz reprezentuje tabelę lub widok indeksowany i zawiera metadane, takie jak liczba wierszy, użycie miejsca, kompresja danych, kolumny i ograniczenia.
Statystyki oczekiwania sqldb_database_wait_stats 00:00:10 Każdy wiersz reprezentuje typ oczekiwania i zawiera skumulowane statystyki oczekiwania wystąpienia aparatu bazy danych. W przypadku baz danych w elastycznej puli zbierane są tylko statystyki oczekiwania w zakresie bazy danych.

Uwaga

W przypadku baz danych w elastycznej puli zestawy danych bazy danych SQL zawierające dane na poziomie puli nie są zbierane. Obejmuje to użycie pamięci, zdarzenia poza pamięcią, liczniki wydajności (wspólne) i zestawy danych liczników wydajności (szczegółowe). Zestaw danych statystyk oczekiwania jest zbierany, ale zawiera tylko oczekiwania w zakresie bazy danych. Pozwala to uniknąć zbierania tych samych danych z każdej bazy danych w puli.

Dane na poziomie puli są zbierane w zestawach danych elastycznej puli SQL. W przypadku danej elastycznej puli liczniki wydajności (wspólne) i liczniki wydajności (szczegółowe) zawierają metryki na poziomie puli i niektóre metryki na poziomie bazy danych, takie jak procesor CPU, operacje we/wy danych, zapis dzienników, żądania, transakcje itp.

Typowe kolumny

Dla każdego typu docelowego zestawy danych mają wspólne kolumny, zgodnie z opisem w poniższych tabelach.

Nazwa kolumny opis
sample_time_utc Godzina obserwowanej wartości w wierszu w formacie UTC.
collection_time_utc Czas zbierania wiersza przez obserwatora w formacie UTC. Ta kolumna jest obecna w zestawach danych, w których czas zbierania może się różnić od czasu próbki.
replica_type Jeden z: podstawowy, pomocniczy wysokiej dostępności, usługa przesyłania dalej replikacji geograficznej, nazwana pomocnicza.
logical_server_name Nazwa serwera logicznego w usłudze Azure SQL Database zawierająca monitorowaną bazę danych lub elastyczną pulę.
database_name Nazwa monitorowanej bazy danych.
database_id Identyfikator bazy danych monitorowanej bazy danych unikatowy w obrębie serwera logicznego.
logical_database_id Unikatowy identyfikator bazy danych, który pozostaje niezmieniony w okresie istnienia bazy danych użytkownika. Zmiana nazwy bazy danych lub zmiana celu usługi nie powoduje zmiany tej wartości.
physical_database_id Unikatowy identyfikator bazy danych dla bieżącej fizycznej bazy danych odpowiadającej bazie danych użytkownika. Zmiana celu usługi bazy danych powoduje zmianę tej wartości.
replica_id Unikatowy identyfikator repliki obliczeniowej w warstwie Hiperskala.

Zestaw danych zawiera kolumny sample_time_utc i collection_time_utc , jeśli zawiera próbki zaobserwowane przed zebraniem wiersza przez obserwatora bazy danych. W przeciwnym razie czas obserwacji i czas zbierania są takie same, a zestaw danych zawiera tylko kolumnę sample_time_utc .

Na przykład sqldb_database_resource_utilization zestaw danych pochodzi z dynamicznego widoku zarządzania (DMV) sys.dm_db_resource_stats . Dynamiczny widok zarządzania zawiera kolumnę end_time , która jest czasem obserwacji dla każdego wiersza raportowania zagregowanych statystyk zasobów dla 15-sekundowego interwału. Tym razem jest raportowany w kolumnie sample_time_utc . Gdy obserwator bazy danych wysyła zapytanie do tego dynamicznego widoku zarządzania, zestaw wyników może zawierać wiele wierszy, z których każdy ma inny end_timeelement . Wszystkie te wiersze mają tę samą collection_time_utc wartość.