sys.dm_os_latch_stats (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Mengembalikan informasi tentang semua tunggu kait yang diatur menurut kelas.

Catatan

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.

Izin

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

Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam##MS_ServerStateReader## peran server diperlukan. 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 izin TAMPILKAN STATUS PERFORMA SERVER pada 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.

Catatan

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

Kait

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.

Catatan

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 Penggunaan internal saja.
CLR_UDX_STORE Penggunaan internal saja.
CLR_DATAT_ACCESS Penggunaan internal saja.
CLR_XVAR_PROXY_LIST Penggunaan internal saja.
DBCC_CHECK_AGGREGATE Penggunaan internal saja.
DBCC_CHECK_RESULTSET Penggunaan internal saja.
DBCC_CHECK_TABLE Penggunaan internal saja.
DBCC_CHECK_TABLE_INIT Penggunaan internal saja.
DBCC_CHECK_TRACE_LIST Penggunaan internal saja.
DBCC_FILE_CHECK_OBJECT Penggunaan internal saja.
DBCC_PERF Digunakan untuk menyinkronkan penghitung pemantauan performa internal.
DBCC_PFS_STATUS Penggunaan internal saja.
DBCC_OBJECT_METADATA Penggunaan internal saja.
DBCC_HASH_DLL Penggunaan internal saja.
EVENTING_CACHE Penggunaan internal saja.
FCB Digunakan untuk menyinkronkan akses ke blok kontrol file.
FCB_REPLICA 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 Penggunaan internal saja.
FILE_MANAGER Penggunaan internal saja.
FILESTREAM_FCB Penggunaan internal saja.
FILESTREAM_FILE_MANAGER Penggunaan internal saja.
FILESTREAM_GHOST_FILES Penggunaan internal saja.
FILESTREAM_DFS_ROOT Penggunaan internal saja.
LOG_MANAGER Penggunaan internal saja.
FULLTEXT_DOCUMENT_ID Penggunaan internal saja.
FULLTEXT_DOCUMENT_ID_TRANSACTION Penggunaan internal saja.
FULLTEXT_DOCUMENT_ID_NOTIFY Penggunaan internal saja.
FULLTEXT_LOGS Penggunaan internal saja.
FULLTEXT_CRAWL_LOG Penggunaan internal saja.
FULLTEXT_ADMIN Penggunaan internal saja.
FULLTEXT_AMDIN_COMMAND_CACHE Penggunaan internal saja.
FULLTEXT_LANGUAGE_TABLE Penggunaan internal saja.
FULLTEXT_CRAWL_DM_LIST Penggunaan internal saja.
FULLTEXT_CRAWL_CATALOG Penggunaan internal saja.
FULLTEXT_FILE_MANAGER Penggunaan internal saja.
DATABASE_MIRRORING_REDO Penggunaan internal saja.
DATABASE_MIRRORING_SERVER Penggunaan internal saja.
DATABASE_MIRRORING_CONNECTION Penggunaan internal saja.
DATABASE_MIRRORING_STREAM Penggunaan internal saja.
QUERY_OPTIMIZER_VD_MANAGER Penggunaan internal saja.
QUERY_OPTIMIZER_ID_MANAGER Penggunaan internal saja.
QUERY_OPTIMIZER_VIEW_REP Penggunaan internal saja.
RECOVERY_BAD_PAGE_TABLE Penggunaan internal saja.
RECOVERY_MANAGER Penggunaan internal saja.
SECURITY_OPERATION_RULE_TABLE Penggunaan internal saja.
SECURITY_OBJPERM_CACHE Penggunaan internal saja.
SECURITY_CRYPTO Penggunaan internal saja.
SECURITY_KEY_RING Penggunaan internal saja.
SECURITY_KEY_LIST Penggunaan internal saja.
SERVICE_BROKER_CONNECTION_RECEIVE Penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION Penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_UPDATE Penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_STATE Penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_ERRORS Penggunaan internal saja.
SSBXmitWork Penggunaan internal saja.
SERVICE_BROKER_MESSAGE_TRANSMISSION Penggunaan internal saja.
SERVICE_BROKER_MAP_MANAGER Penggunaan internal saja.
SERVICE_BROKER_HOST_NAME Penggunaan internal saja.
SERVICE_BROKER_READ_CACHE 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. Ketidakcocokan pada kait kelas ini dapat terjadi ketika banyak koneksi: Dalam status tunggu WAITFOR(RECEIVE) ; memanggil WAITFOR(RECEIVE); melebihi batas waktu WAITFOR; menerima pesan; melakukan atau menggulung balik transaksi yang berisi WAITFOR(RECEIVE); Anda dapat mengurangi ketidakcocokan dengan mengurangi jumlah utas dalam status tunggu WAITFOR(RECEIVE).
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA Penggunaan internal saja.
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA Penggunaan internal saja.
SERVICE_BROKER_TRANSPORT Penggunaan internal saja.
SERVICE_BROKER_MIRROR_ROUTE Penggunaan internal saja.
TRACE_ID Penggunaan internal saja.
TRACE_AUDIT_ID Penggunaan internal saja.
TRACE Penggunaan internal saja.
TRACE_CONTROLLER Penggunaan internal saja.
TRACE_EVENT_QUEUE Penggunaan internal saja.
TRANSACTION_DISTRIBUTED_MARK Penggunaan internal saja.
TRANSACTION_OUTCOME Penggunaan internal saja.
NESTING_TRANSACTION_READONLY Penggunaan internal saja.
NESTING_TRANSACTION_FULL Penggunaan internal saja.
MSQL_TRANSACTION_MANAGER Penggunaan internal saja.
DATABASE_AUTONAME_MANAGER Penggunaan internal saja.
UTILITY_DYNAMIC_VECTOR Penggunaan internal saja.
UTILITY_SPARSE_BITMAP Penggunaan internal saja.
UTILITY_DATABASE_DROP Penggunaan internal saja.
UTILITY_DYNAMIC_MANAGER_VIEW Penggunaan internal saja.
UTILITY_DEBUG_FILESTREAM Penggunaan internal saja.
UTILITY_LOCK_INFORMATION Penggunaan internal saja.
VERSIONING_TRANSACTION Penggunaan internal saja.
VERSIONING_TRANSACTION_LIST Penggunaan internal saja.
VERSIONING_TRANSACTION_CHAIN Penggunaan internal saja.
VERSIONING_STATE Penggunaan internal saja.
VERSIONING_STATE_CHANGE Penggunaan internal saja.
KTM_VIRTUAL_CLOCK Penggunaan internal saja.

Catatan

Dokumentasi SQL Server menggunakan istilah pohon B umumnya dalam referensi ke indeks. Dalam indeks rowstore, SQL Server mengimplementasikan pohon B+. Ini tidak berlaku untuk indeks penyimpan kolom atau penyimpanan data dalam memori. Untuk informasi selengkapnya, lihat panduan arsitektur dan desain indeks SQL Server dan Azure SQL.

Lihat Juga

DBCC SQLPERF (Transact-SQL)
Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
SQL Server, Objek Kait