2011-03-09 14 views
4

MS SQL Server 2008はバイナリデータフィールドをキャッシュしますか?つまり、常にデータをキャッシュする12GBのRAMを使用するMS SQL Server 2008 R2を使用しています。私たちのデータベースには200GB以上のVARBINARYが含まれています。これも同様にキャッシュされますか?MS SQL Server 2008はバイナリデータフィールドをキャッシュしますか?つまり、VARBINARY

EDIT: SQL Serverの実際

@Martinキャッシュバイナリデータのおかげで、あなたがバイナリデータをキャッシュを停止するか、何とかこれを制限するために、SQL Serverを伝えることができるのでしょうか?

答えて

3

はい。お試しください

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データを格納できます。

+0

@リチャード 'TEXT_MIX_PAGE'と' TEXT_TREE_PAGE' - 私は忘れてしまった1つの他のタイプがあると思います - ただSQL Server Internalsの本を見てください... –

+0

Nope。それは私がLOBページのために考えることです。 'TEXT_DATA'と' TEXT_TREE_PAGE'は[私が見る限り]同じものです(http://sqlskills.com/blogs/paul/post/Inside-the-Storage-Engine-Anatomy-of-a-page)。 aspx)varbinary(max)はページが小さくても保存できます。 –

+0

ありがとうございます。次に問題となるのは、SQLで現在キャッシュされている4GBのバイナリデータとしてバイナリデータをキャッシュしないようにする方法です。 – Jeremy

関連する問題