sys.dm_os_latch_stats (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseInstans Terkelola Azure SQLAzure Synapse AnalyticsSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

Mengembalikan informasi tentang semua tunggu kait yang diatur menurut kelas.

Note

Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_os_latch_stats. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Nama kolom Jenis data Deskripsi
latch_class nvarchar(60) Nama kelas kait.
waiting_requests_count bigint Jumlah tunggu pada kait di kelas ini. Penghitung ini ditingkatkan pada awal penantian kait.
wait_time_ms bigint Total waktu tunggu, dalam milidetik, pada kait di kelas ini.

Catatan: Kolom ini diperbarui setiap lima menit selama tunggu kait dan di akhir latch menunggu.
max_wait_time_ms bigint Waktu maksimum objek memori telah menunggu pada kait ini. Jika nilai ini luar biasa tinggi, nilai ini mungkin menunjukkan kebuntuan internal.
pdw_node_id int Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW)

Pengidentifikasi untuk simpul tempat distribusi ini aktif.

Permissions

Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE izin.

Pada tujuan layanan SQL Database Basic, S0 Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE pada database, atau keanggotaan dalam ##MS_ServerStateReader## peran server diperlukan.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan VIEW izin SERVER PERFORMANCE STATE di server.

Keterangan

sys.dm_os_latch_stats dapat digunakan untuk mengidentifikasi sumber ketidakcocokan kait dengan memeriksa nomor tunggu relatif dan waktu tunggu untuk kelas kait yang berbeda. Dalam beberapa situasi, Anda mungkin dapat mengatasi atau mengurangi ketidakcocokan kait. Namun, mungkin ada situasi yang mengharuskan Anda untuk menghubungi Layanan Dukungan Pelanggan Microsoft.

Anda dapat mengatur ulang konten sys.dm_os_latch_stats dengan menggunakan DBCC SQLPERF sebagai berikut:

DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);  
GO  

Ini mengatur ulang semua penghitung ke 0.

Note

Statistik ini tidak bertahan jika SQL Server dimulai ulang. Semua data bersifat kumulatif sejak terakhir kali statistik direset, atau sejak SQL Server dimulai.

Latches

Kait adalah objek sinkronisasi ringan internal yang mirip dengan kunci, yang digunakan oleh berbagai komponen SQL Server. Kait terutama digunakan untuk menyinkronkan halaman database selama operasi seperti buffer atau akses file. Setiap kait dikaitkan dengan satu unit alokasi.

Penantian kait terjadi ketika permintaan kait tidak dapat segera diberikan, karena kait dipegang oleh utas lain dalam mode yang bertentangan. Tidak seperti kunci, kait dilepaskan segera setelah operasi, bahkan dalam operasi tulis.

Kait dikelompokkan ke dalam kelas berdasarkan komponen dan penggunaan. Nol atau lebih kait kelas tertentu dapat ada kapan saja dalam instans SQL Server.

Note

sys.dm_os_latch_stats tidak melacak permintaan kait yang diberikan segera, atau yang gagal tanpa menunggu.

Tabel berikut berisi deskripsi singkat dari berbagai kelas kait.

Kelas kait Deskripsi
ALLOC_CREATE_RINGBUF Digunakan secara internal oleh SQL Server untuk menginisialisasi sinkronisasi pembuatan buffer cincin alokasi.
ALLOC_CREATE_FREESPACE_CACHE Digunakan untuk menginisialisasi sinkronisasi cache ruang kosong internal untuk timbunan.
ALLOC_CACHE_MANAGER Digunakan untuk menyinkronkan pengujian koherensi internal.
ALLOC_FREESPACE_CACHE Digunakan untuk menyinkronkan akses ke cache halaman dengan ruang yang tersedia untuk timbunan dan objek besar biner (BLOB). Ketidakcocokan pada kait kelas ini dapat terjadi ketika beberapa koneksi mencoba menyisipkan baris ke dalam tumpukan atau BLOB secara bersamaan. Anda dapat mengurangi pertikaian ini dengan mempartisi objek. Setiap partisi memiliki kaitnya sendiri. Pemartisian akan mendistribusikan sisipan di beberapa kait.
ALLOC_EXTENT_CACHE Digunakan untuk menyinkronkan akses ke cache sejauh mana yang berisi halaman yang tidak dialokasikan. Ketidakcocokan pada kait kelas ini dapat terjadi ketika beberapa koneksi mencoba mengalokasikan halaman data di unit alokasi yang sama secara bersamaan. Pertikaian ini dapat dikurangi dengan mempartisi objek di mana unit alokasi ini adalah bagian.
ACCESS_METHODS_DATASET_PARENT Digunakan untuk menyinkronkan akses himpunan data anak ke himpunan data induk selama operasi paralel.
ACCESS_METHODS_HOBT_FACTORY Digunakan untuk menyinkronkan akses ke tabel hash internal.
ACCESS_METHODS_HOBT Digunakan untuk menyinkronkan akses ke representasi dalam memori HoBt.
ACCESS_METHODS_HOBT_COUNT Digunakan untuk menyinkronkan akses ke halaman HoBt dan penghitung baris.
ACCESS_METHODS_HOBT_VIRTUAL_ROOT Digunakan untuk menyinkronkan akses ke abstraksi halaman akar dari pohon B internal.
ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC Digunakan untuk menyinkronkan akses yang dapat bekerja.
ACCESS_METHODS_BULK_ALLOC Digunakan untuk menyinkronkan akses dalam alokator massal.
ACCESS_METHODS_SCAN_RANGE_GENERATOR Digunakan untuk menyinkronkan akses ke generator rentang selama pemindaian paralel.
ACCESS_METHODS_KEY_RANGE_GENERATOR Digunakan untuk menyinkronkan akses ke operasi read-ahead selama pemindaian paralel rentang kunci.
APPEND_ONLY_STORAGE_INSERT_POINT Digunakan untuk menyinkronkan sisipan di unit penyimpanan khusus tambahan cepat.
APPEND_ONLY_STORAGE_FIRST_ALLOC Digunakan untuk menyinkronkan alokasi pertama untuk unit penyimpanan khusus tambahan.
APPEND_ONLY_STORAGE_UNIT_MANAGER Digunakan untuk sinkronisasi akses struktur data internal dalam manajer unit penyimpanan khusus tambahan cepat.
APPEND_ONLY_STORAGE_MANAGER Digunakan untuk menyinkronkan operasi penyusutan di manajer unit penyimpanan khusus tambahan cepat.
BACKUP_RESULT_SET Digunakan untuk menyinkronkan kumpulan hasil pencadangan paralel.
BACKUP_TAPE_POOL Digunakan untuk menyinkronkan kumpulan pita cadangan.
BACKUP_LOG_REDO Digunakan untuk menyinkronkan operasi pengulangan log cadangan.
BACKUP_INSTANCE_ID Digunakan untuk menyinkronkan pembuatan ID instans untuk penghitung pemantauan performa cadangan.
BACKUP_MANAGER Digunakan untuk menyinkronkan manajer pencadangan internal.
BACKUP_MANAGER_DIFFERENTIAL Digunakan untuk menyinkronkan operasi pencadangan diferensial dengan DBCC.
BACKUP_OPERATION Digunakan untuk sinkronisasi struktur data internal dalam operasi pencadangan, seperti database, log, atau cadangan file.
BACKUP_FILE_HANDLE Digunakan untuk menyinkronkan operasi buka file selama operasi pemulihan.
BUFFER Digunakan untuk menyinkronkan akses jangka pendek ke halaman database. Kait buffer diperlukan sebelum membaca atau memodifikasi halaman database apa pun. Ketidakcocokan kait buffer dapat menunjukkan beberapa masalah, termasuk halaman panas dan I/Os lambat.

Kelas kait ini mencakup semua kemungkinan penggunaan kait halaman. sys.dm_os_wait_stats membuat perbedaan antara tunggu kait halaman yang disebabkan oleh operasi I/O dan operasi baca dan tulis di halaman.
BUFFER_POOL_GROW Digunakan untuk sinkronisasi manajer buffer internal selama operasi pertumbuhan kumpulan buffer.
DATABASE_CHECKPOINT Digunakan untuk menserialisasikan titik pemeriksaan dalam database.
CLR_PROCEDURE_HASHTABLE Untuk penggunaan internal saja.
CLR_UDX_STORE Untuk penggunaan internal saja.
CLR_DATAT_ACCESS Untuk penggunaan internal saja.
CLR_XVAR_PROXY_LIST Untuk penggunaan internal saja.
DBCC_CHECK_AGGREGATE Untuk penggunaan internal saja.
DBCC_CHECK_RESULTSET Untuk penggunaan internal saja.
DBCC_CHECK_TABLE Untuk penggunaan internal saja.
DBCC_CHECK_TABLE_INIT Untuk penggunaan internal saja.
DBCC_CHECK_TRACE_LIST Untuk penggunaan internal saja.
DBCC_FILE_CHECK_OBJECT Untuk penggunaan internal saja.
DBCC_PERF Digunakan untuk menyinkronkan penghitung pemantauan performa internal.
DBCC_PFS_STATUS Untuk penggunaan internal saja.
DBCC_OBJECT_METADATA Untuk penggunaan internal saja.
DBCC_HASH_DLL Untuk penggunaan internal saja.
EVENTING_CACHE Untuk penggunaan internal saja.
FCB Digunakan untuk menyinkronkan akses ke blok kontrol file.
FCB_REPLICA Untuk penggunaan internal saja.
FGCB_ALLOC Gunakan untuk menyinkronkan akses ke informasi alokasi round robin dalam grup file.
FGCB_ADD_REMOVE Gunakan untuk menyinkronkan akses ke grup file untuk menambahkan, menghilangkan, menumbuhkan, dan menyusutkan operasi file.
FILEGROUP_MANAGER Untuk penggunaan internal saja.
FILE_MANAGER Untuk penggunaan internal saja.
FILESTREAM_FCB Untuk penggunaan internal saja.
FILESTREAM_FILE_MANAGER Untuk penggunaan internal saja.
FILESTREAM_GHOST_FILES Untuk penggunaan internal saja.
FILESTREAM_DFS_ROOT Untuk penggunaan internal saja.
LOG_MANAGER Untuk penggunaan internal saja.
FULLTEXT_DOCUMENT_ID Untuk penggunaan internal saja.
FULLTEXT_DOCUMENT_ID_TRANSACTION Untuk penggunaan internal saja.
FULLTEXT_DOCUMENT_ID_NOTIFY Untuk penggunaan internal saja.
FULLTEXT_LOGS Untuk penggunaan internal saja.
FULLTEXT_CRAWL_LOG Untuk penggunaan internal saja.
FULLTEXT_ADMIN Untuk penggunaan internal saja.
FULLTEXT_AMDIN_COMMAND_CACHE Untuk penggunaan internal saja.
FULLTEXT_LANGUAGE_TABLE Untuk penggunaan internal saja.
FULLTEXT_CRAWL_DM_LIST Untuk penggunaan internal saja.
FULLTEXT_CRAWL_CATALOG Untuk penggunaan internal saja.
FULLTEXT_FILE_MANAGER Untuk penggunaan internal saja.
DATABASE_MIRRORING_REDO Untuk penggunaan internal saja.
DATABASE_MIRRORING_SERVER Untuk penggunaan internal saja.
DATABASE_MIRRORING_CONNECTION Untuk penggunaan internal saja.
DATABASE_MIRRORING_STREAM Untuk penggunaan internal saja.
QUERY_OPTIMIZER_VD_MANAGER Untuk penggunaan internal saja.
QUERY_OPTIMIZER_ID_MANAGER Untuk penggunaan internal saja.
QUERY_OPTIMIZER_VIEW_REP Untuk penggunaan internal saja.
RECOVERY_BAD_PAGE_TABLE Untuk penggunaan internal saja.
RECOVERY_MANAGER Untuk penggunaan internal saja.
SECURITY_OPERATION_RULE_TABLE Untuk penggunaan internal saja.
SECURITY_OBJPERM_CACHE Untuk penggunaan internal saja.
SECURITY_CRYPTO Untuk penggunaan internal saja.
SECURITY_KEY_RING Untuk penggunaan internal saja.
SECURITY_KEY_LIST Untuk penggunaan internal saja.
SERVICE_BROKER_CONNECTION_RECEIVE Untuk penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION Untuk penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_UPDATE Untuk penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_STATE Untuk penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_ERRORS Untuk penggunaan internal saja.
SSBXmitWork Untuk penggunaan internal saja.
SERVICE_BROKER_MESSAGE_TRANSMISSION Untuk penggunaan internal saja.
SERVICE_BROKER_MAP_MANAGER Untuk penggunaan internal saja.
SERVICE_BROKER_HOST_NAME Untuk penggunaan internal saja.
SERVICE_BROKER_READ_CACHE Untuk penggunaan internal saja.
SERVICE_BROKER_WAITFOR_MANAGER Digunakan untuk menyinkronkan peta tingkat instans antrean tunggu. Satu antrean ada per ID database, Versi Database, dan tuple ID Antrean. Pertentangan pada kait kelas ini dapat terjadi ketika banyak koneksi adalah: Dalam status tunggu WAITFOR(RECEIVE); memanggil WAITFOR(RECEIVE); melebihi batas waktu WAITFOR; menerima pesan; melakukan atau memutar kembali transaksi yang berisi WAITFOR(RECEIVE); Anda dapat mengurangi pertentangan dengan mengurangi jumlah utas dalam status tunggu WAITFOR(RECEIVE).
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA Untuk penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA Untuk penggunaan internal saja.
SERVICE_BROKER_TRANSPORT Untuk penggunaan internal saja.
SERVICE_BROKER_MIRROR_ROUTE Untuk penggunaan internal saja.
TRACE_ID Untuk penggunaan internal saja.
TRACE_AUDIT_ID Untuk penggunaan internal saja.
JEJAK Untuk penggunaan internal saja.
TRACE_CONTROLLER Untuk penggunaan internal saja.
TRACE_EVENT_QUEUE Untuk penggunaan internal saja.
TRANSACTION_DISTRIBUTED_MARK Untuk penggunaan internal saja.
TRANSACTION_OUTCOME Untuk penggunaan internal saja.
NESTING_TRANSACTION_READONLY Untuk penggunaan internal saja.
NESTING_TRANSACTION_FULL Untuk penggunaan internal saja.
MSQL_TRANSACTION_MANAGER Untuk penggunaan internal saja.
DATABASE_AUTONAME_MANAGER Untuk penggunaan internal saja.
UTILITY_DYNAMIC_VECTOR Untuk penggunaan internal saja.
UTILITY_SPARSE_BITMAP Untuk penggunaan internal saja.
UTILITY_DATABASE_DROP Untuk penggunaan internal saja.
UTILITY_DYNAMIC_MANAGER_VIEW Untuk penggunaan internal saja.
UTILITY_DEBUG_FILESTREAM Untuk penggunaan internal saja.
UTILITY_LOCK_INFORMATION Untuk penggunaan internal saja.
VERSIONING_TRANSACTION Untuk penggunaan internal saja.
VERSIONING_TRANSACTION_LIST Untuk penggunaan internal saja.
VERSIONING_TRANSACTION_CHAIN Untuk penggunaan internal saja.
VERSIONING_STATE Untuk penggunaan internal saja.
VERSIONING_STATE_CHANGE Untuk penggunaan internal saja.
KTM_VIRTUAL_CLOCK Untuk penggunaan internal saja.

Note

Dokumentasi biasanya menggunakan istilah pohon B ketika merujuk pada indeks. Dalam indeks rowstore, Mesin Database mengimplementasikan pohon B+. Ini tidak berlaku untuk indeks penyimpan kolom atau indeks pada tabel yang dioptimalkan memori. Untuk informasi selengkapnya, lihat panduan arsitektur dan desain indeks SQL Server dan Azure SQL.