笔记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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南