sys.dm_os_buffer_descriptors (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te 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.

Note

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
database_id int Tampon havuzundaki sayfayla ilişkili veritabanının kimliği. Null olabilir.

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. Null olabilir.
page_id int Dosya içindeki sayfanın kimliği. Null olabilir.
page_level int Sayfanın dizin seviyesi. Null olabilir.
allocation_unit_id bigint Sayfanın tahsis biriminin kimliği. Bu değer sys.allocation_units birleştirmek için kullanılabilir. Null olabilir.
sayfa_türü nvarchar(60) Sayfanın türü, örneğin: Veri sayfası veya İndeks sayfası. Null olabilir.
satır_sayısı int Sayfadaki satır sayısı. Null olabilir.
free_space_in_bytes int Sayfadaki boş alan miktarı, bayt cinsinden. Null olabilir.
is_modified bit 1 = Sayfa, diskten okunduktan sonra değiştirilmiştir. Null olabilir.
numa_node int Tampon için Uniform Olmayan Bellek Erişim düğümü. Null olabilir.
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. Null olabilir.
is_in_bpool_extension bit 1 = Sayfa tampon havuzu uzantısındadır. Null olabilir.
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 SERVER PERFORMANCE STATE izni gerektirir VIEW .

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.

From To On Relationship
sys.dm_os_buffer_descriptors sys.databases database_id ç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

Examples

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)