Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Zwraca informacje o wszystkich oczekiwaniach na zatrzasku, uporządkowanych według klas.
Uwaga / Notatka
Aby wywołać to z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_os_latch_stats. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| latch_class | nvarchar(60) | Nazwa klasy z zatrzaskiem. |
| waiting_requests_count | bigint | Liczba oczekiwań na zatrzaskach w tej klasie. Ten licznik jest zwiększany na początku czekania na zatrzask. |
| wait_time_ms | bigint | Całkowity czas oczekiwania, w milisekundach, na zatrzaskach w tej klasie. Nuta: Ta kolumna jest aktualizowana co pięć minut podczas oczekiwania na zatrzask oraz na jego zakończenie. |
| max_wait_time_ms | bigint | Maksymalny czas, przez jaki obiekt pamięci czekał na tym zatrzasku. Jeśli ta wartość jest wyjątkowo wysoka, może to wskazywać na wewnętrzne zacięcie. |
| pdw_node_id | int |
Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW) Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. |
Permissions
W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.
W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.
Uwagi
sys.dm_os_latch_stats można wykorzystać do identyfikacji źródła zatrzasku, analizując względne liczby oczekiwania i czasy oczekiwania dla różnych klas zatrzasku. W niektórych sytuacjach możesz rozwiązać lub zmniejszyć konflikt z zatrzaskami. Mogą jednak wystąpić sytuacje, w których konieczne będzie skontaktowanie się z pomocą techniczną firmy Microsoft.
Możesz zresetować zawartość sys.dm_os_latch_stats, używając DBCC SQLPERF następująco:
DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);
GO
Spowoduje to zresetowanie wszystkich liczników do 0.
Uwaga / Notatka
Te statystyki nie są utrwalane, jeśli program SQL Server zostanie uruchomiony ponownie. Wszystkie dane są skumulowane od czasu ostatniego zresetowania statystyk lub od czasu uruchomienia programu SQL Server.
Latches
Zatrzaska to wewnętrzny, lekki obiekt synchronizacji podobny do zamka, używany przez różne komponenty SQL Server. Latch służy głównie do synchronizacji stron bazy danych podczas operacji, takich jak dostęp do bufora lub plików. Każdy zatrzask jest powiązany z jedną jednostką alokacyjną.
Oczekiwanie na zgadek występuje, gdy żądanie blokady nie może być natychmiast zatwierdzone, ponieważ zatrzaska jest utrzymywana przez inny wątek w trybie konfliktowym. W przeciwieństwie do blokad, zatrzask jest zwalniany natychmiast po operacji, nawet podczas operacji zapisu.
Latchy są grupowane w klasy na podstawie komponentów i użytkowania. W dowolnym momencie instancji SQL Servera może istnieć zero lub więcej zatrzasków danej klasy.
Uwaga / Notatka
sys.dm_os_latch_stats Nie śledzi żądań zatrzasku, które zostały przyznane natychmiast lub które nie powiodły się bez oczekiwania.
Poniższa tabela zawiera krótkie opisy różnych klas zatrzasków.
| Klasa zatrzaskowa | Description |
|---|---|
| ALLOC_CREATE_RINGBUF | Używany wewnętrznie przez SQL Server do inicjalizacji synchronizacji tworzenia bufora pierścienia alokacji. |
| ALLOC_CREATE_FREESPACE_CACHE | Używany do inicjalizacji synchronizacji wewnętrznych wolnych pamięci podręcznych dla kopców. |
| ALLOC_CACHE_MANAGER | Używane do synchronizacji wewnętrznych testów spójności. |
| ALLOC_FREESPACE_CACHE | Używany do synchronizacji dostępu do pamięci podręcznej stron z dostępną przestrzenią dla stert i binarnych dużych obiektów (BLOB). Rywalizacja na zatrzaskach tej klasy może wystąpić, gdy wiele połączeń próbuje jednocześnie wstawić wiersze do sterty lub BLOB. Możesz zmniejszyć ten spor, partycjonując obiekt. Każda partycja ma własny zatrzask (snapchat). Podział na particje rozłoży wstawki na wiele zatrzasków. |
| ALLOC_EXTENT_CACHE | Używany do synchronizacji dostępu do pamięci podręcznej zakresów, która zawiera strony nieprzydzielone. Rywalizacja na zatrzaskach tej klasy może wystąpić, gdy wiele połączeń próbuje jednocześnie przydzielić strony danych do tej samej jednostki alokacji. To spory można zmniejszyć, dzieląc obiekt, którego częścią jest ta jednostka alokacji. |
| ACCESS_METHODS_DATASET_PARENT | Używany do synchronizacji dostępu do potomnego zbioru danych z nadrzędnym zbiorem danych podczas operacji równoległych. |
| ACCESS_METHODS_HOBT_FACTORY | Używany do synchronizacji dostępu do wewnętrznej tabeli skrótów. |
| ACCESS_METHODS_HOBT | Używany do synchronizacji dostępu do reprezentacji w pamięci HoBt. |
| ACCESS_METHODS_HOBT_COUNT | Używany do synchronizacji dostępu do strony HoBt i liczników wierszy. |
| ACCESS_METHODS_HOBT_VIRTUAL_ROOT | Używany do synchronizacji dostępu do abstrakcji strony głównej wewnętrznego drzewa B. |
| ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC | Używany do synchronizacji dostępu do stołu roboczego. |
| ACCESS_METHODS_BULK_ALLOC | Używany do synchronizacji dostępu w ramach alokatorów masowych. |
| ACCESS_METHODS_SCAN_RANGE_GENERATOR | Używany do synchronizacji dostępu do generatora zasięgu podczas skanów równoległych. |
| ACCESS_METHODS_KEY_RANGE_GENERATOR | Używany do synchronizacji dostępu do operacji odczytu przed odczytem podczas skanowania równoległego zakresu kluczy. |
| APPEND_ONLY_STORAGE_INSERT_POINT | Używany do synchronizacji insertów w szybkich jednostkach pamięci masowej tylko z dodatkami. |
| APPEND_ONLY_STORAGE_FIRST_ALLOC | Używany do synchronizacji pierwszej alokacji dla jednostki pamięci mającej tylko do dołączania. |
| APPEND_ONLY_STORAGE_UNIT_MANAGER | Używany do synchronizacji dostępu do wewnętrznych struktur danych w szybkim menedżerze jednostek pamięci masowej, który działa tylko na dodawanie. |
| APPEND_ONLY_STORAGE_MANAGER | Używany do synchronizacji operacji kurczenia w szybkim menedżerze jednostek pamięci masowej, który jest tylko do dodawania. |
| BACKUP_RESULT_SET | Używany do synchronizacji równoległych zestawów wyników kopii zapasowych. |
| BACKUP_TAPE_POOL | Używany do synchronizacji zapasowych pul taśm. |
| BACKUP_LOG_REDO | Używany do synchronizacji operacji powtarzania logów kopii zapasowej. |
| BACKUP_INSTANCE_ID | Używany do synchronizacji generowania identyfikatorów instancji dla liczników monitoringu wydajności zapasowej. |
| BACKUP_MANAGER | Używa się do synchronizacji wewnętrznego menedżera kopii zapasowych. |
| BACKUP_MANAGER_DIFFERENTIAL | Używany do synchronizacji operacji różnicowych kopii zapasowych z DBCC. |
| BACKUP_OPERATION | Wykorzystywane do wewnętrznej synchronizacji struktur danych w operacji tworzenia kopii zapasowej, takich jak kopia zapasowa baz danych, logów lub plików. |
| BACKUP_FILE_HANDLE | Używany do synchronizacji operacji otwierania plików podczas operacji przywracania. |
| BUFOR | Używany do synchronizacji krótkoterminowego dostępu do stron bazy danych. Przed odczytem lub modyfikacją jakiejkolwiek strony bazy danych wymagany jest zatrzask bufora. Konkurencja w zatrzasku bufora może wskazywać na kilka problemów, w tym na gorące strony i wolne operacje I/O. Ta klasa zatrzasków obejmuje wszystkie możliwe zastosowania zatrzasków stron. sys.dm_os_wait_stats robi różnicę między oczekiwaniami na zatrzaskowanie strony spowodowanymi operacjami I/O a operacjami odczytu i zapisu na stronie. |
| BUFFER_POOL_GROW | Używany do synchronizacji wewnętrznego menedżera podczas operacji wzrostu puli. |
| DATABASE_CHECKPOINT | Używany do serializacji punktów kontrolnych w bazie danych. |
| CLR_PROCEDURE_HASHTABLE | Tylko do użytku wewnętrznego. |
| CLR_UDX_STORE | Tylko do użytku wewnętrznego. |
| CLR_DATAT_ACCESS | Tylko do użytku wewnętrznego. |
| CLR_XVAR_PROXY_LIST | Tylko do użytku wewnętrznego. |
| DBCC_CHECK_AGGREGATE | Tylko do użytku wewnętrznego. |
| DBCC_CHECK_RESULTSET | Tylko do użytku wewnętrznego. |
| DBCC_CHECK_TABLE | Tylko do użytku wewnętrznego. |
| DBCC_CHECK_TABLE_INIT | Tylko do użytku wewnętrznego. |
| DBCC_CHECK_TRACE_LIST | Tylko do użytku wewnętrznego. |
| DBCC_FILE_CHECK_OBJECT | Tylko do użytku wewnętrznego. |
| DBCC_PERF | Używany do synchronizacji wewnętrznych liczników monitorów wydajności. |
| DBCC_PFS_STATUS | Tylko do użytku wewnętrznego. |
| DBCC_OBJECT_METADATA | Tylko do użytku wewnętrznego. |
| DBCC_HASH_DLL | Tylko do użytku wewnętrznego. |
| EVENTING_CACHE | Tylko do użytku wewnętrznego. |
| FCB | Używany do synchronizacji dostępu do bloku kontroli plików. |
| FCB_REPLICA | Tylko do użytku wewnętrznego. |
| FGCB_ALLOC | Służy do synchronizacji dostępu do informacji o alokacji round robin w grupie plików. |
| FGCB_ADD_REMOVE | Używa się do synchronizacji dostępu do grup plików do operacji dodawania, usuwania, powiększania i zmniejszania plików. |
| FILEGROUP_MANAGER | Tylko do użytku wewnętrznego. |
| FILE_MANAGER | Tylko do użytku wewnętrznego. |
| FILESTREAM_FCB | Tylko do użytku wewnętrznego. |
| FILESTREAM_FILE_MANAGER | Tylko do użytku wewnętrznego. |
| FILESTREAM_GHOST_FILES | Tylko do użytku wewnętrznego. |
| FILESTREAM_DFS_ROOT | Tylko do użytku wewnętrznego. |
| LOG_MANAGER | Tylko do użytku wewnętrznego. |
| FULLTEXT_DOCUMENT_ID | Tylko do użytku wewnętrznego. |
| FULLTEXT_DOCUMENT_ID_TRANSACTION | Tylko do użytku wewnętrznego. |
| FULLTEXT_DOCUMENT_ID_NOTIFY | Tylko do użytku wewnętrznego. |
| FULLTEXT_LOGS | Tylko do użytku wewnętrznego. |
| FULLTEXT_CRAWL_LOG | Tylko do użytku wewnętrznego. |
| FULLTEXT_ADMIN | Tylko do użytku wewnętrznego. |
| FULLTEXT_AMDIN_COMMAND_CACHE | Tylko do użytku wewnętrznego. |
| FULLTEXT_LANGUAGE_TABLE | Tylko do użytku wewnętrznego. |
| FULLTEXT_CRAWL_DM_LIST | Tylko do użytku wewnętrznego. |
| FULLTEXT_CRAWL_CATALOG | Tylko do użytku wewnętrznego. |
| FULLTEXT_FILE_MANAGER | Tylko do użytku wewnętrznego. |
| DATABASE_MIRRORING_REDO | Tylko do użytku wewnętrznego. |
| DATABASE_MIRRORING_SERVER | Tylko do użytku wewnętrznego. |
| DATABASE_MIRRORING_CONNECTION | Tylko do użytku wewnętrznego. |
| DATABASE_MIRRORING_STREAM | Tylko do użytku wewnętrznego. |
| QUERY_OPTIMIZER_VD_MANAGER | Tylko do użytku wewnętrznego. |
| QUERY_OPTIMIZER_ID_MANAGER | Tylko do użytku wewnętrznego. |
| QUERY_OPTIMIZER_VIEW_REP | Tylko do użytku wewnętrznego. |
| RECOVERY_BAD_PAGE_TABLE | Tylko do użytku wewnętrznego. |
| RECOVERY_MANAGER | Tylko do użytku wewnętrznego. |
| SECURITY_OPERATION_RULE_TABLE | Tylko do użytku wewnętrznego. |
| SECURITY_OBJPERM_CACHE | Tylko do użytku wewnętrznego. |
| SECURITY_CRYPTO | Tylko do użytku wewnętrznego. |
| SECURITY_KEY_RING | Tylko do użytku wewnętrznego. |
| SECURITY_KEY_LIST | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_CONNECTION_RECEIVE | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_TRANSMISSION | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_TRANSMISSION_UPDATE | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_TRANSMISSION_STATE | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_TRANSMISSION_ERRORS | Tylko do użytku wewnętrznego. |
| SSBXmitWork | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_MESSAGE_TRANSMISSION | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_MAP_MANAGER | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_HOST_NAME | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_READ_CACHE | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_WAITFOR_MANAGER | Używany do synchronizacji mapy kolejek oczekiwania na poziomie instancji. Istnieje jedna kolejka na identyfikator bazy danych, wersję bazy danych oraz krotkę identyfikatora kolejki. Rywalizacja na zatrzaskach tej klasy może wystąpić, gdy wiele połączeń to: W stanie oczekiwania WAITFOR(RECEIVE); wołanie WAITFOR(RECEIVE); przekroczenie czasu WAITFOR timeout; otrzymanie wiadomości; zatwierdzanie lub cofanie transakcji zawierającej WAITFOR(RECEIVE); Możesz zmniejszyć sporność, zmniejszając liczbę wątków w stanie oczekiwania WAITFOR(RECEIVE). |
| SERVICE_BROKER_WAITFOR_TRANSACTION_DATA | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_TRANSPORT | Tylko do użytku wewnętrznego. |
| SERVICE_BROKER_MIRROR_ROUTE | Tylko do użytku wewnętrznego. |
| TRACE_ID | Tylko do użytku wewnętrznego. |
| TRACE_AUDIT_ID | Tylko do użytku wewnętrznego. |
| TRACE | Tylko do użytku wewnętrznego. |
| TRACE_CONTROLLER | Tylko do użytku wewnętrznego. |
| TRACE_EVENT_QUEUE | Tylko do użytku wewnętrznego. |
| TRANSACTION_DISTRIBUTED_MARK | Tylko do użytku wewnętrznego. |
| TRANSACTION_OUTCOME | Tylko do użytku wewnętrznego. |
| NESTING_TRANSACTION_READONLY | Tylko do użytku wewnętrznego. |
| NESTING_TRANSACTION_FULL | Tylko do użytku wewnętrznego. |
| MSQL_TRANSACTION_MANAGER | Tylko do użytku wewnętrznego. |
| DATABASE_AUTONAME_MANAGER | Tylko do użytku wewnętrznego. |
| UTILITY_DYNAMIC_VECTOR | Tylko do użytku wewnętrznego. |
| UTILITY_SPARSE_BITMAP | Tylko do użytku wewnętrznego. |
| UTILITY_DATABASE_DROP | Tylko do użytku wewnętrznego. |
| UTILITY_DYNAMIC_MANAGER_VIEW | Tylko do użytku wewnętrznego. |
| UTILITY_DEBUG_FILESTREAM | Tylko do użytku wewnętrznego. |
| UTILITY_LOCK_INFORMATION | Tylko do użytku wewnętrznego. |
| VERSIONING_TRANSACTION | Tylko do użytku wewnętrznego. |
| VERSIONING_TRANSACTION_LIST | Tylko do użytku wewnętrznego. |
| VERSIONING_TRANSACTION_CHAIN | Tylko do użytku wewnętrznego. |
| VERSIONING_STATE | Tylko do użytku wewnętrznego. |
| VERSIONING_STATE_CHANGE | Tylko do użytku wewnętrznego. |
| KTM_VIRTUAL_CLOCK | Tylko do użytku wewnętrznego. |
Uwaga / Notatka
W dokumentacji jest zwykle używany termin B-tree w odniesieniu do indeksów. W indeksach typu rowstore silnik bazy danych implementuje drzewo B+. Nie dotyczy to indeksów magazynu kolumn ani indeksów w tabelach zoptymalizowanych pod kątem pamięci. Aby uzyskać więcej informacji, zobacz architekturę i przewodnik projektowania indeksu SQL Server i Azure SQL.
Zobacz też
DBCC SQLPERF (Transact-SQL)
Dynamiczne widoki zarządzania związane z systemem operacyjnym PROGRAMU SQL Server (Transact-SQL)
SQL Server, Latches Object