2011-03-09 70 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

相关问题