sys.dm_os_buffer_descriptors (Transact-SQL)
Şu anda da tüm veri sayfaları hakkında bilgi verir SQL Server arabellek havuzu.Bu görünüm çıkışını, veritabanı sayfalarının arabellek havuzu için veritabanı, nesne veya türüne göre dağılımı belirlemek için kullanılabilir.
Veri sayfa diskten okunan sayfa içine kopyalanır SQL Server arabellek havuzu ve yeniden kullanım için önbelleğe alınanHer sayfa önbelleğe alınan veriler, bir arabellek tanımlayıcısı yok.Arabelleği tanımlayıcıları benzersiz olarak tanımlayan bir örnek önbelleğe alınır her veri sayfa SQL Server.sys.dm_os_buffer_descriptorsverir, tüm kullanıcı ve sistem veritabanlarıiçin sayfaları önbelleğe.Bu ilişkili sayfaları içerir Resource veritabanı.
Sütun adı |
Veri türü |
Açıklama |
---|---|---|
database_id |
int |
arabellek havuzu sayfa ile bağlantılı veritabanı kimliği.NULL olur. |
file_id |
int |
sayfakalıcı görüntü saklayan dosya kimliği.Boşalabilir mi |
page_id |
int |
Dosyadaki sayfa kimliği.NULL olur. |
page_level |
int |
sayfa düzey dizin.Boşalabilir mi |
allocation_unit_id |
bigint |
sayfa ayırma birimi kimliği.Bu değer, birleştirmekkullanılabilirsys.allocation_units. NULL olur. Not sys.dm_os_buffer_descriptorsVarolmayan değerleri gösterebilir allocation_unit_id sürümlerinde oluşturulan kümelenmiş dizinler için SQL Server daha önceki SQL Server 2005. |
page_type |
nvarchar(60) |
sayfa, aşağıdaki gibi yazın: Veri sayfa veya dizin sayfa.NULL olur.Daha fazla bilgi için, bkz. Anlama sayfaları ve kapsam. |
row_count |
int |
sayfasatır sayısı.NULL olur. |
free_space_in_bytes |
int |
Bayt cinsinden kullanılabilir boş alan miktarı sayfa.NULL olur. |
is_modified |
bit |
1 = Sayfanın diskten okunduktan sonra değiştirildi.NULL olur. |
numa_mode |
int |
Arabellek için bellek erişimi düğümü nonuniform. |
İzinler
Sunucu üzerindeki görünüm server state izni gerektirir.
Açıklamalar
sys.dm_os_buffer_descriptorstarafından kullanılan sayfaları verir Resource veritabanı.sys.dm_os_buffer_descriptorsbunları okurken, hatalar sayfalarını veya serbest veya çalınmış sayfaları hakkında bilgi vermez.
Dan |
Amacı |
Üzerinde |
İlişki |
---|---|---|---|
sys.dm_os_buffer_descriptors |
sys.databases |
database_id |
çok bir |
sys.dm_os_buffer_descriptors |
<userdb>.sys.allocation_units |
allocation_unit_id |
çok bir |
sys.dm_os_buffer_descriptors |
<userdb>.sys.database_files |
file_id |
çok bir |
Örnekler
A.Her veritabanı için önbelleğe alınan sayfa sayısı döndürme
Aşağıdaki örnek, her veritabanı için yüklenen sayfaların sayısını 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.Geçerli veritabanındaki her nesne için önbelleğe alınan sayfa sayısı döndürme
Aşağıdaki örnek, geçerli veritabanındaki her nesne için yüklenen sayfaların 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;