sys.dm_os_buffer_descriptorsGROUP (Transact-sql)
Şu anda içinde tüm veri sayfaları hakkında bilgi verir SQL Serverarabellek havuzu. Bu görünüm çıktı, veritabanı sayfalarının arabellek havuzu veritabanı, nesne veya türüne göre dağılımı belirlemek için kullanılabilir.
Veri sayfası diskten okunan sayfa içine kopyalanır SQL Serverarabellek havuzu ve yeniden kullanmak üzere önbelleğe. Her önbelleğe alınmış veri sayfası bir arabelleği tanımlayıcısı vardır. Arabelleği tanımlayıcıları benzersiz olarak tanımlayan her veri sayfası örneği şu anda önbelleğe alınan SQL Server. sys.dm_os_buffer_descriptorsdöner için tüm kullanıcı ve sistem veritabanlarındaki sayfaları önbelleğe alınmış. Bu, ilişkili oldukları sayfaları içerir Resourceveritabanı.
Sütun adı |
Veri türü |
Açıklama |
---|---|---|
database_id |
int |
Arabellek havuzu sayfa ile ilişkilendirilmiş veritabanı Kımlığı. NULL olabilecek olduğunu. |
file_id |
int |
Sayfanın kalıcı görüntü saklayan dosya Kımlığı. NULL olabilecek |
page_id |
int |
Sayfa içinde dosya Kımlığı. NULL olabilecek olduğunu. |
page_level |
int |
Sayfanın dizin düzeyi. NULL olabilecek |
allocation_unit_id |
bigint |
Sayfa ayırma birimi Kımlığı. Katılmak için bu değer kullanılabilir sys.allocation_units. NULL olabilecek olduğunu. Not sys.dm_os_buffer_descriptorsvarolmayan değerleri göstermek olabilir allocation_unit_id, sürümlerinde oluşturulan Kümelenmiş dizinler için SQL Serverdaha önce SQL Server 2005. |
page_type |
nvarchar(60) |
Sayfası, gibi yazın: veri sayfası veya dizin sayfası. NULL olabilecek olduğunu. Daha fazla bilgi için, bkz. SQL Server Operating System Related Dynamic Management Views. |
row_count |
int |
Sayfadaki satır sayısı. NULL olabilecek olduğunu. |
free_space_in_bytes |
int |
Bayt cinsinden, kullanılabilir boş alan miktarı sayfasında. NULL olabilecek olduğunu. |
is_modified |
bit |
1 = Sayfanın diskten okumak sonra değiştirildi. NULL olabilecek olduğunu. |
numa_mode |
int |
Arabellek nonuniform bellek erişimi düğüm. |
İzinler
Sunucu üzerindeki VIEW server state izni gerektirir.
Açıklamalar
sys.dm_os_buffer_descriptorstarafından kullanılan sayfaları verir Resourceveritabanı. sys.dm_os_buffer_descriptorsveya ne zaman onlar okumak vardı hataları vardı sayfaları ücretsiz ya da çalınmış sayfaları hakkında bilgi vermez.
Kaynak |
Amacı |
Tarih |
İlişki |
---|---|---|---|
sys.dm_os_buffer_descriptors |
sys.databases |
database_id |
çoktan bire |
sys.dm_os_buffer_descriptors |
<userdb>.sys.allocation_units |
allocation_unit_id |
çoktan bire |
sys.dm_os_buffer_descriptors |
<userdb>.sys.database_files |
file_id |
çoktan bire |
Ö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;
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ü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;
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 bkz.
Başvuru
allocation_units (Transact-sql)
Dinamik yönetimi görünümler ve işlevler (Transact-sql)
SQL Server işletim sistemi ilgili dinamik yönetim görünümleri (Transact-sql)