2011-03-09 69 views
4

MS SQL Server 2008緩存二進制數據字段?即VARBINARYMS SQL Server 2008緩存二進制數據字段嗎?即VARBINARY

我們有MS SQL Server 2008 R2使用12g RAM不斷緩存數據。我們的數據庫包含超過200GB的VARBINARY。這也會被緩存嗎?

編輯: SQL服務器的確緩存的二進制數據謝謝@馬丁

你能告訴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_PAGETEXT_TREE_PAGE,但LOB數據也可以存儲在數據頁面上。

+0

@Richard'TEXT_MIX_PAGE'和'TEXT_TREE_PAGE' - 我想可能還有另外一種我忘記的類型 - 只要看看SQL Server Internals book ... – 2011-03-09 23:01:58

+0

不是。這就是我認爲的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

+0

謝謝。接下來的問題是,我如何告訴SQL不要將二進制數據緩存爲當前緩存4GB的二進制數據。 – Jeremy 2011-03-09 23:20:51

相關問題