笔记338 SQL2012内存管理改进

笔记338 SQL2012内存管理改进  

 1 --SQL2005,SQL2008  在MEMORYSTATUS和[dm_os_memory_clerks]里看到multi page和single page的使用情况
 2 但是SQL2012只有一个page,而不分开multi page和single page了,max server memory可以控制multi page和single page
 3 
 4 
 5 --从上面的图可以看出,SQL Server 2012 多了一个memory Manager,它来统一响应SQL Server 内部各种组件内存申请的请求。
 6 --因为这个原因,在SQL Server 2012里面,max server memory 不再像以前的版本那样,
 7 --只控制buffer pool的大小,也包括那些大于8kb 的内存请求。也就是,
 8 -- max server memory 能够更准确地控制SQL Server 的所有内存使用了
 9 
10 
11 DBCC MEMORYSTATUS
12 
13 SELECT  * FROM    [sys].[dm_os_memory_clerks]
SQL2005,SQL2008
SQL2012
 
统计分配的内存总量
统计内存分配器分配的内存总量

SELECT mc.type, mc.name, sum(mc.pages_kb) as AllocatedPages_KB,
sum(mc.virtual_memory_reserved_kb) as VM_Reserved_KB,
sum(mc.virtual_memory_committed_kb) as VM_Committed_KB,
max(mc.page_size_in_bytes)/1024 as SinglePageSize_KB
FROM sys.dm_os_memory_clerks mc GROUP BY mc.type, mc.name
ORDER BY AllocatedPages_KB desc, mc.type, mc.name


查询结果如图18-2所示
MEMORYCLERK_SQLBUFFERPOOL:表示缓冲区中数据的大小。
OBJECTSTORE_LOCK_MANAGER:表示锁结构使用的内存,当发生严重的锁阻塞时,表明系统中存储了大量锁,造成锁管理占用大量的内存。
CACHESTORE_OBJCP:表示触发器和存储过程模块(Module)的执行计划占用的缓存空间。
CACHESTORE_SQLCP:表示动态 Transact-SQL 语句,即查询和预编译 Transact-SQL 语句的执行计划缓存。
CACHESTORE_COLUMNSTOREOBJECTPOOL:表示列存储索引占用的缓存。

 

f
 
posted @ 2013-08-07 22:34  桦仔  阅读(397)  评论(0编辑  收藏  举报