sys.dm_os_latch_stats (SQL Bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure Synapse Analytics Analytics
Platform System (PDW)
Mengembalikan informasi tentang semua waktu 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 waktu tunggu kait. |
| wait_time_ms | bigint | Total waktu tunggu, dalam milidetik, pada kait di kelas ini. Catatan: Kolom ini diperbarui setiap lima menit selama waktu tunggu kait dan di akhir waktu tunggu kait. |
| 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 Azure Active Directory, 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.
Keterangan
sys.dm_os_latch_stats dapat digunakan untuk mengidentifikasi sumber ketidakcocokan kait dengan memeriksa jumlah tunggu relatif dan waktu tunggu untuk kelas kait yang berbeda. Dalam beberapa situasi, Anda mungkin dapat menyelesaikan atau mengurangi ketidakcocokan kait. Namun, mungkin ada situasi yang mengharuskan Anda 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 dipertahankan 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. Latch terutama digunakan untuk menyinkronkan halaman database selama operasi seperti buffer atau akses file. Setiap kait dikaitkan dengan satu unit alokasi.
Waktu tunggu 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 segera diberikan, atau yang gagal tanpa menunggu.
Tabel berikut berisi deskripsi singkat dari berbagai kelas kait.
| Kelas latch | 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 tumpukan. |
| 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. Partisi 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. Ketidakcocokan ini dapat dikurangi dengan mempartisi objek tempat unit alokasi ini menjadi bagiannya. |
| 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 dikerjakan. |
| 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 yang 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 yang cepat. |
| APPEND_ONLY_STORAGE_MANAGER | Digunakan untuk menyinkronkan operasi penyusutan di manajer unit penyimpanan khusus tambahan yang 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 waktu 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 monitor 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. |
| JEJAK | 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
SQL Server dokumentasi 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. Tinjau Panduan Arsitektur dan Desain Indeks SQL Server untuk detailnya.
Lihat juga
DBCC SQLPERF (SQL Transact)
Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
SQL Server, Objek Kait