所有
绝大部分
没有
没有
MemToLeave
(Multi -page)
没有
一小部分
所有
所有
五.sql server 2012 内存
在 sql server 2012里,single page allocator 和multi page allocator 统一起来了,叫做any size page allocator。max server memory 不再像以前的版本那样,只控制buffer pool的大小,也包括那些大于8kb 的内存请求。也就是max server memory 能够更准确地控制SQL Server 的内存使用了。
如下图所示:
使用dmv 来查看当前实例的总内存空间,以及占用内存空间
–Target Server Memory (KB)最多能申请的内存量
–Total Server Memory (KB) 目前使用了多少内存量
从下面的空间占用也可以看出来, 给sql server有分配多少内存, 它就会占用多少内存,以达到性能的最优。
select counter_name, ltrim(cntr_value*1.0/1024.0/1024.0)+'G'
as memoryGB from master.sys.dm_os_performance_counters
where counter_name like '%target%server%memory%'or counter_name like '%total%memory%'六 总结
当您启动Microsoft SQL Server时,SQL Server内存使用量可能会继续稳步增长,而不是减少,即使服务器上的活动很低。此外,任务管理器和性能监视器可能显示,计算机上可用的物理内存会逐渐减少,直到可用内存在4 MB到10 MB之间。这种行为本身并不表示内存泄漏。这种行为是典型的,并且是SQL Server缓冲池的预期行为。
默认情况下,SQL Server根据操作系统报告的物理内存负载动态地增长和缩小缓冲池(缓存)的大小。只要有足够的内存(4 MB和10 MB)可以防止分页,那么SQL Server缓冲池就会继续增长。当与SQL Server在同一台计算机上分配内存时,SQL Server缓冲管理器将根据需要释放内存。SQL Server可以每秒释放数兆字节的内存。这允许SQL Server快速地适应内存分配更改。
您可以为SQL Server数据库引擎使用最小服务器内存和最大服务器内存配置选项使用多少内存(缓冲池)设置上限和下限
请注意,通过上图设置内存最大 max 只限制SQL Server缓冲池的大小。不限制SQL Server为其他组件分配的剩余未保留内存区域,如扩展存储过程、COM对象、非共享dll、EXEs和MAPI组件。由于之前的分配,SQL Server私有字节的数量超过了最大服务器内存配置。
后面章节在详细介绍内存的查看分析










