Aracılığıyla paylaş


sys.dm_os_buffer_descriptors (Transact-SQL)

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

SQL Server buffer havuzunda bulunan tüm veri sayfaları hakkında bilgi döndürür. Bu görünümün çıktısı, veritabanı sayfalarının tampon havuzundaki dağılımını veritabanı, nesne veya türe göre belirlemek için kullanılabilir. SQL Server'da bu dinamik yönetim görünümü, tampon havuz uzantısı dosyasındaki veri sayfaları hakkında da bilgi döndürür. Daha fazla bilgi için Buffer Pool Extension'a bakınız.

Bir veri sayfası diskten okunduğunda, sayfa SQL Server tampon havuzuna kopyalanır ve yeniden kullanılmak üzere önbelleğe alınır. Her önbelleğe alınan veri sayfasının bir tampon tanımlayıcısı vardır. Buffer tanımlayıcıları, şu anda SQL Server örneğinde önbelleklenmiş her veri sayfasını benzersiz şekilde tanımlar. sys.dm_os_buffer_descriptors, tüm kullanıcı ve sistem veritabanları için önbelleklenmiş sayfaları döndürür. Bu, Kaynak veritabanı ile ilişkili sayfaları da kapsar.

Uyarı

Bunu Azure Synapse Analytics veya Analytics Platform System (PDW) olarak adlandırmak için sys.dm_pdw_nodes_os_buffer_descriptors 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
veritabanı_kimlik int Tampon havuzundaki sayfayla ilişkili veritabanının kimliği. Boş değer atanabilir.

Azure SQL Veritabanı'nda değerler tek bir veritabanı veya elastik havuz içinde benzersizdir, ancak mantıksal sunucu içinde değildir.
dosya_kimlik int Sayfanın kalıcı görüntüsünü saklayan dosyanın kimliği. Boş değer atanabilir.
page_id int Dosya içindeki sayfanın kimliği. Boş değer atanabilir.
page_level int Sayfanın dizin seviyesi. Boş değer atanabilir.
allocation_unit_id bigint Sayfanın tahsis biriminin kimliği. Bu değer sys.allocation_units birleştirmek için kullanılabilir. Boş değer atanabilir.
page_type nvarchar(60) Sayfanın türü, örneğin: Veri sayfası veya İndeks sayfası. Boş değer atanabilir.
row_count int Sayfadaki satır sayısı. Boş değer atanabilir.
free_space_in_bytes int Sayfadaki boş alan miktarı, bayt cinsinden. Boş değer atanabilir.
is_modified bit 1 = Sayfa, diskten okunduktan sonra değiştirilmiştir. Boş değer atanabilir.
numa_node int Tampon için Uniform Olmayan Bellek Erişim düğümü. Boş değer atanabilir.
read_microsec bigint Sayfanın tampona okunması için gereken gerçek zaman (mikrosaniye cinsinden). Bu sayı, buffer tekrar kullanıldığında sıfırlanır. Boş değer atanabilir.
is_in_bpool_extension bit 1 = Sayfa tampon havuzu uzantısındadır. Boş değer atanabilir.
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_buffer_descriptors, Kaynak veritabanı tarafından kullanılan sayfaları döndürür. sys.dm_os_buffer_descriptors, ücretsiz veya çalınan sayfalar hakkında ya da okunduğunda hata bulunan sayfalar hakkında bilgi geri göndermez.

Kaynak İçin On İlişki
sys.dm_os_buffer_descriptors sys.databases veritabanı_kimlik çoka bir
sys.dm_os_buffer_descriptors <userdb>.sys.allocation_units allocation_unit_id çoka bir
sys.dm_os_buffer_descriptors <userdb>.sys.database_files dosya_kimlik çoka bir
sys.dm_os_buffer_descriptors sys.dm_os_buffer_pool_extension_configuration dosya_kimlik çoka bir

Örnekler

A. Her veritabanı için önbelleğe alınmış sayfa sayısı döndürülüyor

Aşağıdaki örnek, her veritabanı için yüklenen sayfa sayısını geri döndürür.

SELECT COUNT(*)AS cached_pages_count  
    ,CASE database_id   
        WHEN 32767 THEN 'ResourceDb'   
        ELSE db_name(database_id)   
        END AS database_name  
FROM sys.dm_os_buffer_descriptors  
GROUP BY DB_NAME(database_id) ,database_id  
ORDER BY cached_pages_count DESC;  

B. Mevcut veritabanındaki her nesne için önbelleklenmiş sayfa sayısını döndürmek

Aşağıdaki örnek, mevcut veritabanındaki her nesne için yüklenen sayfa sayısını döndürür.

SELECT COUNT(*)AS cached_pages_count   
    ,name ,index_id   
FROM sys.dm_os_buffer_descriptors AS bd   
    INNER JOIN   
    (  
        SELECT object_name(object_id) AS name   
            ,index_id ,allocation_unit_id  
        FROM sys.allocation_units AS au  
            INNER JOIN sys.partitions AS p   
                ON au.container_id = p.hobt_id   
                    AND (au.type = 1 OR au.type = 3)  
        UNION ALL  
        SELECT object_name(object_id) AS name     
            ,index_id, allocation_unit_id  
        FROM sys.allocation_units AS au  
            INNER JOIN sys.partitions AS p   
                ON au.container_id = p.partition_id   
                    AND au.type = 2  
    ) AS obj   
        ON bd.allocation_unit_id = obj.allocation_unit_id  
WHERE database_id = DB_ID()  
GROUP BY name, index_id   
ORDER BY cached_pages_count DESC;  

Ayrıca bakınız

sys.allocation_units (Transact-SQL)

SQL Server İşletim Sistemiyle İlgili Dinamik Yönetim Görünümleri (Transact-SQL)
Kaynak Veritabanı
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)