浅谈SQL Server 对于内存的管理.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈SQL Server 对于内存的管理

AgileSharp -浅谈SQL Server 对于内存的管理 简介 理解 SQL Server 对于内存的管理是对于 SQL Server 问题处理和性能调优的基本,本篇文章讲述 SQL Server 对于内存管理的内存原理。 二级存储(secondary storage) 对于计算机来说,存储体系是分层级的。离 CPU 越近的地方速度愉快,但容量越小(如图 1 所示)。 比如:传统的计算机存储体系结构离CPU 由近到远依次是:CPU 内的寄存器,一级缓存,二级缓 存,内存,硬盘。但同时离 CPU 越远的存储系统都会比之前的存储系统大一个数量级。比如硬盘 通常要比同时代的内存大一个数量级。 AgileSharp() 安捷雨希提供性能优化,架构设计咨询,内训,解决方案 AgileSharp -浅谈SQL Server 对于内存的管理 图 1.计算机存储体系 因此对于SQL Server 来说,正常的生产系统所配置的内存通常不能装载所有数据,因此会涉及到 二级存储,也就是磁盘。磁盘作为现代计算机系统中最后的机械存储部件,读取数据需要移动磁头 (具体关于磁盘的原理,可以看我之前写的一篇文章 ),并且由于数据库所访问的数据往往是随机 分布在磁盘的各个位置,因此如果频繁的读取磁盘需要频繁的移动磁头,这个性能将会十分底下。 由计算机体存储体系结构可以知道,计算机对于所有硬盘内数据的操作都需要首先读取到内存, 因此利用好内存的缓冲区而减少对磁盘IO 的访问将会是提升 SQL Server 性能的关键,这也是本 篇文章写作的出发点之一。 SQL Server 引擎,一个自我调整的引擎 由于SQL Server 过去一直面向是中小型企业市场的原因,SQL Server 存储引擎被设计成一个不需 要太多配置就能使用的产品,从而减少了部署成本,但这也是很多人一直诟病的微软开放的配置 过少。而对于 SQL Server 如何使用内存,几乎没有直接可以配置的空间,仅仅开放的配置只有是 否使用 AWE,以及实例占用的最大或最小内存,如图 2 所示。 AgileSharp() 安捷雨希提供性能优化,架构设计咨询,内训,解决方案 AgileSharp -浅谈SQL Server 对于内存的管理 图2.SQL Server 可控控制内存的选项 而对于具体的 SQL Server 如何使用内存,例如分配给执行计划缓存多少,分配给数据buffer 多 少,这些都无法通过配置进行调控。这也是很多其它技术的开发人员对于使用微软技术的开发人 员充满优越感的原因,而在我看来,虽然 SQL Server 提供可控配置的地方很少,但是很多地方都 可以在通晓原理的情况下进行“间接”的配置。这也需要了解一些 Windows 的原理。 SQL Server 是如何使用内存的 SQL Server 存储引擎本身是一个 Windows 下的进程,所以 SQL Server 使用内存和其它 Windows 进程一样,都需要向 Windows 申请内存。从 Windows 申请到内存之后,SQL Server 使用内存粗 略可以分为两部分:缓冲池内存(数据页和空闲页),非缓冲内存(线程,DLL,链接服务器等)。而 缓冲池内存占据了 SQL Server 的大部分内存使用。缓冲池所占内存也就是图2 最大最小内存所设 置的,因此 sqlservr.exe 所占的内存有可能会大于图 2 中所设置的最大内存。 还有一点是,SQL Server 使用内存的特点是:有多少用多少,并且用了以后不释放(除非收到 Windows 内存压力的通知)。比如我所在公司的开发服务器,在几乎没有负载的时候来看内存使用, 如图 3 所示。 AgileSharp() 安捷雨希提供性能优化,架构设计咨询,内训,解决方案 AgileSharp -浅谈SQL Server 对于内存的管理 图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

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档