4

MS SQL Server 2008 是否缓存二进制数据字段?即 VARBINARY

我们有 MS SQL Server 2008 R2 使用 12gb 的 ram 不断缓存数据。我们的数据库包括超过 200gb 的 VARBINARY。这也会被缓存吗?

编辑: SQL Server 确实缓存二进制数据谢谢@Martin

你能告诉 SQL Server 停止缓存二进制数据或以某种方式限制它吗?

4

1 回答 1

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 数据也可以存储在数据页上。

于 2011-03-09T22:40:47.607 回答