Aracılığıyla paylaş


sys.dm_os_latch_stats (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'te SQL Veritabanı

Tüm mandal beklemeleri hakkında sınıflara göre düzenlenmiş bilgiler döndürür.

Uyarı

Bunu Azure Synapse Analytics veya Analytics Platform System (PDW) olarak adlandırmak için sys.dm_pdw_nodes_os_latch_stats adını kullanın. Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Sütun adı Veri türü Description
latch_class nvarchar(60) Mandal sınıfının adı.
waiting_requests_count bigint Bu derste mandalı bekleme sayısı. Bu sayaç, mandal beklemesi süreci başladığında artırılır.
wait_time_ms bigint Bu sınıfta mandalıtlarda toplam bekleme süresi, milisaniye cinsinden.

Not: Bu sütun, bir mandatal bekleme sırasında ve bir mandatal bekleme sonunda her beş dakikada bir güncellenir.
max_wait_time_ms bigint Bir bellek nesnesinin bu mandalda beklediği maksimum süre. Bu değer alışılmadık derecede yüksekse, iç bir çıkmaz olduğunu gösterebilir.
pdw_node_id int için geçerlidir: Azure Synapse Analytics, Analiz Platformu Sistemi (PDW)

Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı.

Permissions

SQL Server ve SQL Yönetilen Örneği'ne VIEW SERVER STATE izni gerekir.

SQL Veritabanı Temel,S0 ve S1 hizmet hedeflerinive elastik havuzlardaki veritabanları için, sunucu yöneticisi hesabı, Microsoft Entra yönetici hesabı veya ##MS_ServerStateReader##sunucu rolü üyeliği gereklidir. Diğer tüm SQL Veritabanı hizmet hedeflerinde, veritabanında VIEW DATABASE STATE izni veya ##MS_ServerStateReader## sunucu rolü üyeliği gereklidir.

SQL Server 2022 ve üzeri için izinler

Sunucuda SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.

Açıklamalar

sys.dm_os_latch_stats, farklı latch sınıflarının göreceli bekleme sayıları ve bekleme sürelerini inceleyerek kilitleme çatışmasının kaynağını belirlemek için kullanılabilir. Bazı durumlarda, mandalı sorununu çözebilir veya azaltabilirsiniz. Ancak, Microsoft Müşteri Destek Hizmetleri'ne başvurmanızı gerektirecek durumlar olabilir.

sys.dm_os_latch_stats içeriğini aşağıdaki şekilde DBCC SQLPERF sıfırlayabilirsiniz:

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

Bu, tüm sayaçları 0 olarak sıfırlar.

Uyarı

SQL Server yeniden başlatılırsa bu istatistikler kalıcı olmaz. İstatistiklerin en son sıfırlanmasından veya SQL Server'ın başlatılmasından bu yana tüm veriler birikmeli olur.

Latches

Latch, çeşitli SQL Server bileşenleri tarafından kullanılan kilide benzer bir iç hafif senkronizasyon nesnesidir. Mandal, öncelikle tampon veya dosya erişimi gibi işlemler sırasında veritabanı sayfalarını senkronize etmek için kullanılır. Her mandal, tek bir tahsis ünitesiyle ilişkilendirilir.

Bir latch beklemesi, bir latch talebinin hemen verilemeyeceği durumlarda oluşur; çünkü mandal, çelişkili modda başka bir iş parçacığı tarafından tutulur. Kilitlerin aksine, bir mandal işlemden hemen sonra, hatta yazma işlemlerinde bile serbest bırakılır.

Kilitler, bileşenler ve kullanım alanlarına göre sınıflara ayrılır. Belirli bir sınıfın sıfır veya daha fazla kilitlenmesi SQL Server örneğinde herhangi bir zamanda mevcut olabilir.

Uyarı

sys.dm_os_latch_stats hemen onaylanan veya beklemeden başarısız olan kilitleme taleplerini takip etmez.

Aşağıdaki tablo, çeşitli mandal sınıflarının kısa açıklamalarını içermektedir.

Mandal sınıfı Description
ALLOC_CREATE_RINGBUF SQL Server tarafından dahili olarak bir tahsis halka tamponunun oluşturulmasının senkronizasyonunu başlatmak için kullanılır.
ALLOC_CREATE_FREESPACE_CACHE Yığınlar için dahili boş alan önbelleklerinin senkronizasyonunu başlatmak için kullanılır.
ALLOC_CACHE_MANAGER İç tutarlılık testlerini senkronize etmek için kullanılır.
ALLOC_FREESPACE_CACHE Sayfa önbelleğine erişimi ve yığınlar ve ikili büyük nesneler (BLOB'lar) için kullanılabilir alanı senkronize etmek için kullanılır. Bu sınıfın mandalı üzerindeki anlaşmazlık, birden fazla bağlantının aynı anda bir yığına veya BLOB'a satır eklemeye çalışmasıyla meydana gelebilir. Bu tartışmayı nesneyi bölmeye bölerek azaltabilirsiniz. Her bölümün kendi mandalı vardır. Bölümleme, eklemeleri birden fazla mandal arasında dağıtacaktır.
ALLOC_EXTENT_CACHE Tahsis edilmemiş sayfaları içeren bir sınırlar önbelleğine erişimi senkronize etmek için kullanılır. Bu sınıfın mandalları üzerindeki anlaşmazlık, birden fazla bağlantı aynı tahsis biriminde veri sayfalarını aynı anda tahsis etmeye çalıştığında meydana gelebilir. Bu tartışma, bu tahsis biriminin parçası olduğu nesnenin bölünmesiyle azaltılabilir.
ACCESS_METHODS_DATASET_PARENT Paralel işlemler sırasında ana veri setine çocuk veri seti erişimini senkronize etmek için kullanılır.
ACCESS_METHODS_HOBT_FACTORY Erişimi dahili bir hash tablosuna senkronize etmek için kullanılır.
ACCESS_METHODS_HOBT Bir HoBt'nin bellek içi temsiline erişimi senkronize etmek için kullanılır.
ACCESS_METHODS_HOBT_COUNT HoBt sayfasına ve satır sayaclarına erişimi senkronize etmek için kullanılır.
ACCESS_METHODS_HOBT_VIRTUAL_ROOT İç bir B-ağacının kök sayfa soyutlamasına erişimi senkronize etmek için kullanılır.
ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC Çalışma masası erişimini senkronize etmek için kullanılır.
ACCESS_METHODS_BULK_ALLOC Toplu ayırıcılar içinde erişimi senkronize etmek için kullanılır.
ACCESS_METHODS_SCAN_RANGE_GENERATOR Paralel taramalar sırasında menzil üreteçine erişimi senkronize etmek için kullanılır.
ACCESS_METHODS_KEY_RANGE_GENERATOR Anahtar aralık paralel taramaları sırasında önden okuma işlemlerine erişimi senkronize etmek için kullanılır.
APPEND_ONLY_STORAGE_INSERT_POINT Hızlı eklenti depolama birimlerinde eklemeleri senkronize etmek için kullanılır.
APPEND_ONLY_STORAGE_FIRST_ALLOC Sadece ekleyici depolama birimi için ilk tahsisi senkronize etmek için kullanılır.
APPEND_ONLY_STORAGE_UNIT_MANAGER Hızlı, sadece ekleyici depolama birimi yöneticisi içinde dahili veri yapısı erişim senkronizasyonu için kullanılır.
APPEND_ONLY_STORAGE_MANAGER Sadece hızlı ek depolama birimi yöneticisinde küçültme işlemlerini senkronize etmek için kullanılır.
BACKUP_RESULT_SET Paralel yedekleme sonuç setlerini senkronize etmek için kullanılır.
BACKUP_TAPE_POOL Yedek bant havuzlarını senkronize etmek için kullanıldı.
BACKUP_LOG_REDO Yedek günlük tekrar işlemlerini senkronize etmek için kullanılır.
BACKUP_INSTANCE_ID Yedek performans monitörü sayacları için örnek kimliklerinin oluşturulmasını senkronize etmek için kullanılır.
BACKUP_MANAGER İç yedekleme yöneticisini senkronize etmek için kullanılır.
BACKUP_MANAGER_DIFFERENTIAL DBCC ile diferansiyel yedekleme işlemlerini senkronize etmek için kullanılır.
BACKUP_OPERATION Veritabanı, günlük veya dosya yedekleme gibi yedekleme işlemlerinde dahili veri yapısı senkronizasyonu için kullanılır.
BACKUP_FILE_HANDLE Geri yükleme işlemi sırasında dosya açma işlemlerini senkronize etmek için kullanılır.
ARABELLEK Veritabanı sayfalarına kısa süreli erişimi senkronize etmek için kullanılır. Herhangi bir veritabanı sayfasını okumak veya değiştirmek için bir tampon mandalı gereklidir. Buffer mandalı sorunu, sıcak sayfalar ve yavaş giriş/girişler gibi çeşitli sorunlara işaret edebilir.

Bu mandal, sayfa mandallarının tüm olası kullanımlarını kapsar. sys.dm_os_wait_stats, I/O işlemleri nedeniyle oluşan sayfa latch beklemeleri ile sayfadaki okuma ve yazma işlemleri arasında fark yaratır.
BUFFER_POOL_GROW Buffer havuzu büyüme operasyonları sırasında dahili tampon yöneticisi senkronizasyonu için kullanılır.
DATABASE_CHECKPOINT Bir veritabanında kontrol noktalarını serileştirmek için kullanılır.
CLR_PROCEDURE_HASHTABLE Yalnızca iç kullanım.
CLR_UDX_STORE Yalnızca iç kullanım.
CLR_DATAT_ACCESS Yalnızca iç kullanım.
CLR_XVAR_PROXY_LIST Yalnızca iç kullanım.
DBCC_CHECK_AGGREGATE Yalnızca iç kullanım.
DBCC_CHECK_RESULTSET Yalnızca iç kullanım.
DBCC_CHECK_TABLE Yalnızca iç kullanım.
DBCC_CHECK_TABLE_INIT Yalnızca iç kullanım.
DBCC_CHECK_TRACE_LIST Yalnızca iç kullanım.
DBCC_FILE_CHECK_OBJECT Yalnızca iç kullanım.
DBCC_PERF İç performans monitörü sayacılarını senkronize etmek için kullanılır.
DBCC_PFS_STATUS Yalnızca iç kullanım.
DBCC_OBJECT_METADATA Yalnızca iç kullanım.
DBCC_HASH_DLL Yalnızca iç kullanım.
EVENTING_CACHE Yalnızca iç kullanım.
FCB Dosya kontrol bloğuna erişimi senkronize etmek için kullanılır.
FCB_REPLICA Yalnızca iç kullanım.
FGCB_ALLOC Bir dosya grubu içinde round robin tahsis bilgilerine erişimi senkronize etmek için kullanılır.
FGCB_ADD_REMOVE Dosya gruplarına erişimi ekleme, bırakma, büyütme ve küçültme işlemleri için senkronize etmek için kullanılır.
FILEGROUP_MANAGER Yalnızca iç kullanım.
FILE_MANAGER Yalnızca iç kullanım.
FILESTREAM_FCB Yalnızca iç kullanım.
FILESTREAM_FILE_MANAGER Yalnızca iç kullanım.
FILESTREAM_GHOST_FILES Yalnızca iç kullanım.
FILESTREAM_DFS_ROOT Yalnızca iç kullanım.
LOG_MANAGER Yalnızca iç kullanım.
FULLTEXT_DOCUMENT_ID Yalnızca iç kullanım.
FULLTEXT_DOCUMENT_ID_TRANSACTION Yalnızca iç kullanım.
FULLTEXT_DOCUMENT_ID_NOTIFY Yalnızca iç kullanım.
FULLTEXT_LOGS Yalnızca iç kullanım.
FULLTEXT_CRAWL_LOG Yalnızca iç kullanım.
FULLTEXT_ADMIN Yalnızca iç kullanım.
FULLTEXT_AMDIN_COMMAND_CACHE Yalnızca iç kullanım.
FULLTEXT_LANGUAGE_TABLE Yalnızca iç kullanım.
FULLTEXT_CRAWL_DM_LIST Yalnızca iç kullanım.
FULLTEXT_CRAWL_CATALOG Yalnızca iç kullanım.
FULLTEXT_FILE_MANAGER Yalnızca iç kullanım.
DATABASE_MIRRORING_REDO Yalnızca iç kullanım.
DATABASE_MIRRORING_SERVER Yalnızca iç kullanım.
DATABASE_MIRRORING_CONNECTION Yalnızca iç kullanım.
DATABASE_MIRRORING_STREAM Yalnızca iç kullanım.
QUERY_OPTIMIZER_VD_MANAGER Yalnızca iç kullanım.
QUERY_OPTIMIZER_ID_MANAGER Yalnızca iç kullanım.
QUERY_OPTIMIZER_VIEW_REP Yalnızca iç kullanım.
RECOVERY_BAD_PAGE_TABLE Yalnızca iç kullanım.
RECOVERY_MANAGER Yalnızca iç kullanım.
SECURITY_OPERATION_RULE_TABLE Yalnızca iç kullanım.
SECURITY_OBJPERM_CACHE Yalnızca iç kullanım.
SECURITY_CRYPTO Yalnızca iç kullanım.
SECURITY_KEY_RING Yalnızca iç kullanım.
SECURITY_KEY_LIST Yalnızca iç kullanım.
SERVICE_BROKER_CONNECTION_RECEIVE Yalnızca iç kullanım.
SERVICE_BROKER_TRANSMISSION Yalnızca iç kullanım.
SERVICE_BROKER_TRANSMISSION_UPDATE Yalnızca iç kullanım.
SERVICE_BROKER_TRANSMISSION_STATE Yalnızca iç kullanım.
SERVICE_BROKER_TRANSMISSION_ERRORS Yalnızca iç kullanım.
SSBXmitWork Yalnızca iç kullanım.
SERVICE_BROKER_MESSAGE_TRANSMISSION Yalnızca iç kullanım.
SERVICE_BROKER_MAP_MANAGER Yalnızca iç kullanım.
SERVICE_BROKER_HOST_NAME Yalnızca iç kullanım.
SERVICE_BROKER_READ_CACHE Yalnızca iç kullanım.
SERVICE_BROKER_WAITFOR_MANAGER Bekleme kuyruklarının örnek düzeyindeki haritasını senkronize etmek için kullanılır. Her veritabanı kimliği, Veritabanı Sürümü ve Kuyruk Kimliği tuplesi için bir kuyruk vardır. Bu sınıfın mandalları üzerinde anlaşmazlık, birçok bağlantı şu durumda olduğunda meydana gelebilir: BEKLER(RECEIVE) bekleme durumunda; WAITFOR(RECEIVE) çağrısı yapıyor; WAITFOR molasını aşmak; bir mesaj almak; WAITFOR(RECEIVE)'i içeren işlemi yapmak veya geri almak gerekir; WAITFOR(RECEIVE) bekleme durumundaki iş parçacıklarının sayısını azaltarak anlaşmazlığı azaltabilirsiniz.
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA Yalnızca iç kullanım.
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA Yalnızca iç kullanım.
SERVICE_BROKER_TRANSPORT Yalnızca iç kullanım.
SERVICE_BROKER_MIRROR_ROUTE Yalnızca iç kullanım.
TRACE_ID Yalnızca iç kullanım.
TRACE_AUDIT_ID Yalnızca iç kullanım.
İzlemek Yalnızca iç kullanım.
TRACE_CONTROLLER Yalnızca iç kullanım.
TRACE_EVENT_QUEUE Yalnızca iç kullanım.
TRANSACTION_DISTRIBUTED_MARK Yalnızca iç kullanım.
TRANSACTION_OUTCOME Yalnızca iç kullanım.
NESTING_TRANSACTION_READONLY Yalnızca iç kullanım.
NESTING_TRANSACTION_FULL Yalnızca iç kullanım.
MSQL_TRANSACTION_MANAGER Yalnızca iç kullanım.
DATABASE_AUTONAME_MANAGER Yalnızca iç kullanım.
UTILITY_DYNAMIC_VECTOR Yalnızca iç kullanım.
UTILITY_SPARSE_BITMAP Yalnızca iç kullanım.
UTILITY_DATABASE_DROP Yalnızca iç kullanım.
UTILITY_DYNAMIC_MANAGER_VIEW Yalnızca iç kullanım.
UTILITY_DEBUG_FILESTREAM Yalnızca iç kullanım.
UTILITY_LOCK_INFORMATION Yalnızca iç kullanım.
VERSIONING_TRANSACTION Yalnızca iç kullanım.
VERSIONING_TRANSACTION_LIST Yalnızca iç kullanım.
VERSIONING_TRANSACTION_CHAIN Yalnızca iç kullanım.
VERSIONING_STATE Yalnızca iç kullanım.
VERSIONING_STATE_CHANGE Yalnızca iç kullanım.
KTM_VIRTUAL_CLOCK Yalnızca iç kullanım.

Uyarı

Belgelerde genellikle dizinlere başvuruda B ağacı terimi kullanılır. Rowstore dizinlerinde Veritabanı Altyapısı bir B+ ağacı uygular. Bu, sütun deposu dizinleri veya bellek için iyileştirilmiş tablolardaki dizinler için geçerli değildir. Daha fazla bilgi için SQL Server ve Azure SQL dizin mimarisi ve tasarım kılavuzuna bakın.

Ayrıca Bkz.

DBCC SQLPERF (Transact-SQL)
SQL Server İşletim Sistemiyle İlgili Dinamik Yönetim Görünümleri (Transact-SQL)
SQL Server, Latches Object