Udostępnij za pośrednictwem


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

Dotyczy:Azure SQL DatabaseAzure 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 ze strumieniowego pobierania danych w usłudze Azure Data Explorer oraz 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. Możesz monitorować opóźnienie pozyskiwania danych na pulpitach nawigacyjnych monitora bazy danych, korzystając z 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 wydajność 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. Określa to priorytety obciążeń aplikacji w przypadku zapytań monitorowania.

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, zapytania monitorowania używają 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 następujących scenariuszach mogą wystąpić luki w zebranych danych:

  • Jeśli ogólne wykorzystanie zasobów jest wysokie lub występuje konflikt współbieżności między zapytaniami monitorowania i obciążeniami aplikacji. W takich przypadkach zapytania monitorujące są zdepriorytetyzowane na rzecz obciążeń aplikacji.
  • Jeśli masz automatyzację, która kończy długotrwałe sesje. Aby uniknąć luk w zebranych danych, wyklucz dowolną sesję, w której kolumna program_name w widoku systemu sys.dm_exec_sessions jest SQLExternalMonitoring lub x_ms_reserved_sql_external_monitoring.

Zbieranie danych w elastycznych pulach

Aby monitorować pulę elastyczną, należy wyznaczyć jedną bazę danych w puli jako baza danych kotwiczna. Obserwator łączy się z bazą danych Anchor. Ponieważ obserwator posiadaVIEW SERVER PERFORMANCE STATE uprawnienie, widoki systemowe w bazie danych anchor udostępniają dane monitorujące dla całej puli.

Napiwek

Możesz dodać pustą bazę danych do każdej puli elastycznej, którą chcesz monitorować, i wyznaczyć ją jako bazę kotwiczącą. 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, takie jak wykorzystanie zasobów i metryki szybkości żądań dla każdej bazy danych. W niektórych scenariuszach dodanie docelowego elementu SQL do monitorowania elastycznej puli baz danych jako całości może sprawić, że monitorowanie poszczególnych baz danych w tej puli stanie się zbędne.

Niektóre dane monitorowania, takie jak procesor CPU, pamięć, wykorzystanie magazynu na poziomie puli oraz statystyki oczekiwania, są zbierane dopiero na poziomie puli elastycznej, ponieważ nie można przypisać tych danych 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 w przypadku dodawania poszczególnych baz danych jako obiektów docelowych SQL.

W przypadku dodawania pojedynczych baz danych z elastycznej puli jako obiektów docelowych SQL należy również dodać pulę elastyczną jako docelową bazę danych SQL. 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 obiekt docelowy SQL.

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.

Miejsce przechowywania danych

Klienci mogą przechowywać zebrane dane monitorowania SQL w jednym z trzech typów magazynów danych:

  • Baza danych w klastrze Azure Data Explorer. Domyślnie nowy klaster usługi Azure Data Explorer jest tworzony dla każdego nowego obserwatora i znajduje się w tym samym regionie świadczenia usługi Azure co obserwator.

    Klienci mogą wybrać konkretny region świadczenia usługi Azure w lokalizacji geograficznej platformy Azure jako lokalizacji klastra usługi Azure Data Explorer i bazy danych. Aby uzyskać więcej informacji na temat możliwości replikacji danych w usłudze Azure Data Explorer, zobacz Omówienie ciągłości działania i odzyskiwania po awarii.

  • Baza danych w bezpłatnym klastrze usługi Azure Data Explorer.

    Klienci mogą wybrać konkretną lokalizację geograficzną platformy Azure, ale nie określony region świadczenia usługi Azure jako lokalizację bezpłatnego klastra usługi Azure Data Explorer i bazy danych. Replikacja danych do innego regionu lub lokalizacji geograficznej nie jest obsługiwana.

  • Baza danych w analizie w czasie rzeczywistym w usłudze Microsoft Fabric.

    Klienci nie mogą wybrać lokalizacji geograficznej bazy danych.

Aby w pełni kontrolować miejsce przechowywania danych dla zebranych danych monitorowania SQL, klienci muszą wybrać bazę danych w klastrze usługi Azure Data Explorer jako magazyn danych.

Klienci mogą dopasować lokalizację geograficzną i region swojego klastra usługi Azure Data Explorer do monitorowanego obszaru geograficznego i regionu monitorowanych zasobów usługi Azure SQL. Gdy zasoby usługi Azure SQL znajdują się w wielu regionach, klienci mogą wymagać utworzenia wielu obserwatorów i wielu klastrów usługi Azure Data Explorer, aby spełnić wymagania dotyczące rezydencji danych.

Zestawy danych

W tej sekcji opisano zestawy danych dostępne dla każdego typu docelowego SQL, w tym częstotliwość zbierania danych 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ść zbierania (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, takich jak Przechwytywanie zmian danych lub Strumień 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 test łączności (logowanie i zapytanie) dla bazy danych.
Repliki geograficzne sqldb_database_geo_replicas 00:00:30 Każdy wiersz reprezentuje replikę geograficzną podstawową lub pomocniczą, 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:30 Każdy wiersz reprezentuje zarządcę pamięci i obejmuje użycie pamięci przez zarządcę w instancji mechanizmu 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 braku pamięci w silniku bazy danych.
Liczniki wydajności (wspólne) sqldb_database_performance_counters_common 00:00:10 Każdy wiersz reprezentuje licznik wydajności wystąpienia silnika 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 silnika 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 czasu wykonania zapytań sqldb_database_query_runtime_stats 00:15:00 Każdy wiersz reprezentuje interwał czasu działania magazynu zapytań i zawiera statystyki wykonywania zapytań.
Statystyki czasu oczekiwania zapytań sqldb_database_query_wait_stats 00:15:00 Każdy wiersz reprezentuje przedział czasowy Query Store i zawiera statystyki kategorii oczekiwania.
Repliki sqldb_database_replicas 00:00:30 Każdy wiersz reprezentuje replikę bazy danych, w tym metadane replikacji i statystyki. Zawiera replikę podstawową i repliki geograficzne, gdy są zbierane na podstawowej, oraz repliki pomocnicze, gdy są zbierane na pomocniczej.
Wykorzystanie zasobów sqldb_database_resource_utilization 00:00:15 Każdy wiersz reprezentuje zużycie CPU, I/O danych, I/O dziennika oraz inne statystyki dotyczące zużycia zasobów przez bazę danych w określonym przedziale czasowym.
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.
Planerzy 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.
Wejście/wyjście pamięci masowej 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 obejmuje jej wykorzystanie przestrzeni dyskowej, w tym tempdb, Magazyn 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. Zbierane, gdy liczba tabel i indeksowanych widoków w bazie danych wynosi 100 lub mniej.
Statystyki czekania sqldb_database_wait_stats 00:00:10 Każdy wiersz reprezentuje rodzaj oczekiwania i zawiera skumulowane statystyki oczekiwania instancji silnika bazy danych. W przypadku baz danych w elastycznej puli zbierane są tylko statystyki oczekiwania obejmujące bazę 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 statystyk oczekiwania jest zbierany, ale zawiera tylko oczekiwania dotyczące danej 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, zestawy danych 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 CPU, operacje we/wy danych, zapis dziennika, żądania, transakcje itp.

Typowe kolumny

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

Nazwa kolumny opis
subscription_id Identyfikator subskrypcji Azure bazy danych SQL.
resource_group_name Nazwa grupy zasobów bazy danych SQL.
resource_id Identyfikator zasobu bazy danych SQL platformy Azure.
sample_time_utc Godzina obserwowanej wartości w wierszu w formacie UTC.
collection_time_utc Czas, kiedy wiersz został zebrany przez obserwatora, w 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, Przekaźnik 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 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 zmienia 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 dla repliki obliczeniowej typu 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, zestaw danych sqldb_database_resource_utilization pochodzi z widoku zarządzania dynamicznymi sys.dm_db_resource_stats. Dynamiczny widok zarządzania (DMV) zawiera kolumnę end_time, który określa czas obserwacji każdego wiersza raportu zagregowanych statystyk zasobów dla 15-sekundowego interwału. Ten czas zostaje zgłoszony w kolumnie sample_time_utc. Gdy obserwator wysyła zapytanie do tego widoku dynamicznego zarządzania, zestaw wyników może zawierać wiele wierszy, z których każdy ma inny element end_time. Wszystkie te wiersze mają tę samą collection_time_utc wartość.