はい。お試しください
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データを格納できます。
@リチャード 'TEXT_MIX_PAGE'と' TEXT_TREE_PAGE' - 私は忘れてしまった1つの他のタイプがあると思います - ただSQL Server Internalsの本を見てください... –
Nope。それは私がLOBページのために考えることです。 'TEXT_DATA'と' TEXT_TREE_PAGE'は[私が見る限り]同じものです(http://sqlskills.com/blogs/paul/post/Inside-the-Storage-Engine-Anatomy-of-a-page)。 aspx)varbinary(max)はページが小さくても保存できます。 –
ありがとうございます。次に問題となるのは、SQLで現在キャッシュされている4GBのバイナリデータとしてバイナリデータをキャッシュしないようにする方法です。 – Jeremy