sys.dm_os_latch_stats (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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 menggunakan istilah pohon B umumnya dalam referensi ke 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.
Lihat Juga
DBCC SQLPERF (Transact-SQL)
Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
SQL Server, Objek Kait