浅谈SQL Server对于内存的管理
作者:网络转载 发布时间:[ 2013/1/30 10:35:30 ] 推荐标签:
SQL Server是如何使用内存的
SQL Server存储引擎本身是一个Windows下的进程,所以SQL Server使用内存和其它Windows进程一样,都需要向Windows申请内存。从Windows申请到内存之后,SQL Server使用内存粗略可以分为两部分:缓冲池内存(数据页和空闲页),非缓冲内存(线程,DLL,链接服务器等)。而缓冲池内存占据了SQL Server的大部分内存使用。缓冲池所占内存也是图2大小内存所设置的,因此sqlservr.exe所占的内存有可能会大于图2中所设置的大内存。
还有一点是,SQL Server使用内存的特点是:有多少用多少,并且用了以后不释放(除非收到Windows内存压力的通知)。比如我所在公司的开发服务器,在几乎没有负载的时候来看内存使用,如图3所示。
图3.SQL Server 进程的内存使用
可以看到CPU在0负载的时候,内存却占据了13个G。这其实是在之前的使用SQL Server向Windows申请的内存一直没有释放所致。
具体SQL Server能够使用多少内存是由以下几个因素决定的:
1.物理内存的大小
2.所安装Windows版本对于内存的限制(比如windows server 2008标准版限制大内存只能使用32GB)
3.SQL Server是32位或64位
4.如图2所示配置SQL Server对于内存的使用量
5.SQL Server的版本(比如express版只能用1G内存)
SQL Server OS的三层内存分配
SQL Server OS对于内存的分配分为三个层级,依赖关系如图4所示。
图4.SQL Server OS内存依赖关系
Memory Node
首先底层的是Memory Node,Memory Node的作用是使得分配内存由Windows移交到SQL Server OS层面执行。每个SQL Server实例通常都只拥有一个Memory Node,Memory Node的多寡只取决于NUMA构架的硬件配置。我们通过 DBCC MEMORYSTATUS 可以看到Memory Node的一些信息,如图5所示。
图5.查看Memory Node信息
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11