是的。嘗試
WITH T
AS (SELECT database_id,
page_type,
total_page_count = COUNT(*) OVER(),
page_count = COUNT(*) OVER
(PARTITION BY database_id, page_type),
row_num = ROW_NUMBER() OVER
(PARTITION BY database_id, page_type
ORDER BY (SELECT 0))
FROM sys.dm_os_buffer_descriptors)
SELECT page_type,
page_count,
PercentageOfCache = ROUND(1E2 * page_count/total_page_count, 2),
SizeInCache =
CASE
WHEN page_count > 131072
THEN LTRIM(STR(page_count/131072.0) + ' GB')
WHEN page_count > 128
THEN LTRIM(STR(page_count/128.0) + ' MB')
ELSE LTRIM(STR(page_count * 8) + ' KB')
END
FROM T
WHERE database_id = DB_ID()
AND row_num = 1
ORDER BY page_count DESC
要查看每種頁面當前有多少種緩衝區緩存爲您的數據庫。
專用LOB頁面類型爲TEXT_MIX_PAGE
和TEXT_TREE_PAGE
,但LOB數據也可以存儲在數據頁面上。
@Richard'TEXT_MIX_PAGE'和'TEXT_TREE_PAGE' - 我想可能還有另外一種我忘記的類型 - 只要看看SQL Server Internals book ... – 2011-03-09 23:01:58
不是。這就是我認爲的LOB頁面。 「TEXT_DATA」和「TEXT_TREE_PAGE」是一樣的東西[據我所見](http://sqlskills.com/blogs/paul/post/Inside-the-Storage-Engine-Anatomy-of-a-page)。 aspx)如果足夠小,varbinary(max)可以存儲在頁面中。 – 2011-03-09 23:12:57
謝謝。接下來的問題是,我如何告訴SQL不要將二進制數據緩存爲當前緩存4GB的二進制數據。 – Jeremy 2011-03-09 23:20:51