sys.dm_os_buffer_descriptors (Transact-SQL)
Şu anda içinde bulunan tüm veri sayfaları hakkında bilgi verir SQL Server arabellek havuzu. Bu görünüm çıkışını Dağıtım veritabanı sayfalarının arabellek havuzu için veritabanı, nesne veya türüne göre belirlemek için kullanılır.
Diskten okunan veri sayfasının, sayfa kopyalanır SQL Server havuzu arabellek ve yeniden kullanılmak üzere önbelleğe. Her veri önbelleğe sayfa bir arabellek tanımlayıcısına sahip.Buffer descriptors uniquely identify each data page that is currently cached in an instance of SQL Server.sys.dm_os_buffer_descriptors returns cached pages for all user and system databases.Bu, kaynak veritabanı ile ilişkili sayfaları içerir.
Sütun adı |
Veri türü |
Açıklama |
---|---|---|
database_id |
int |
Ilişkili veritabanı KIMLIĞI sayfa arabellek havuzu.Null. |
file_id |
int |
Sayfa görüntüsünü kalıcı saklayan dosya KIMLIĞI.Null |
page_id |
int |
Dosya içindeki sayfa KIMLIĞI.Null. |
page_level |
int |
Sayfa düzey dizin.Null |
allocation_unit_id |
bigint |
Ayırma birimi KIMLIĞINI sayfa.Bu değer, allocation_units katılmak için kullanılabilir.Null. Not sürümlerinde oluşturulan kümelenmiş dizinler için allocation_unit_id, varolmayan bir değerler sys.dm_os_buffer_descriptors gösterebilirSQL Server tarihi SQL Server 2005. |
page_type |
nvarchar(60) |
Türü sayfa, örneğin: Veri sayfa veya dizin sayfa. Null.Daha fazla bilgi için bkz:Anlama sayfaları ve alanları. |
row_count |
int |
Sayfadaki satır sayısı.Null. |
free_space_in_bytes |
int |
Sayfa üzerinde kullanılabilir boş alanı, bayt cinsinden miktarı.Null. |
is_modified |
bit |
1 = sayfa diskten okumak sonra değiştirildi.Null. |
numa_mode |
int |
Arabellek için bellek erişimi düğümü nonuniform. |
İzinler
Sunucudaki SUNUCU DURUM VIEW iznine gerek duyar.
Remarks
sys.dm_os_buffer_descriptors returns pages that are being used by the Resource database.sys.dm_os_buffer_descriptors does not return information about free or stolen pages, or about pages that had errors when they were read.
Gelen |
Amacı |
Üzerinde |
İlişki |
---|---|---|---|
sys.dm_os_buffer_descriptors |
sys.Databases |
database_id |
bire çok |
sys.dm_os_buffer_descriptors |
<userdb>. allocation_units |
allocation_unit_id |
bire çok |
sys.dm_os_buffer_descriptors |
<userdb>. sys.database_files |
file_id |
bire çok |
Örnekler
C.Her veritabanı için önbelleğe alınan sayfa sayısı olarak döndürülüyor
Aşağıdaki örnek, her veritabanı için yüklü olan sayfaların sayısını verir.
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.Her nesne için önbelleğe alınan sayfa sayısı geçerli veritabanında döndürülüyor
Aşağıdaki örnek, geçerli veritabanındaki her nesne için yüklü olan sayfaların sayısını verir.
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;