为什么SQLServer数据库内存会不断增加

news/2024/11/25 15:56:09/

 当 SQL Server 数据库引擎在 Microsoft® Windows NT® 或 Windows® 2000 上运行时,其默认内存管理行为并不是获取特定的内存量,而是在不产生多余换页 I/O 的情况下获取尽可能多的内存。为此,数据库引擎获取尽可能多的可用内存,同时保留足够的可用内存以防操作系统交换内存。
  SQL Server 实例在启动时通常获取 8 到 12 MB 的内存以完成初始化过程。当实例完成初始化后,就不会再获取更多的内存,直到用户连接到该实例并开始产生工作负荷。这时,该实例根据需要不停地获取内存以支持工作负荷。随着更多的用户连接并运行查询,SQL Server 将获取支持需求所需的额外内存。该实例将继续获取内存直到达到自身的内存分配目标,并且直到达到该目标的下限才会释放任何内存。
  为了在不产生多余换页 I/O 的情况下获取尽可能多的内存,SQL Server 的每个实例都设置一个内存获取目标,直到计算机的可用物理内存在 4 MB 到 10 MB 的范围内。之所以选择该范围是因为测试表明 Windows NT 和 Windows 2000 都有最小内存交换,直到内存分配等于可用物理内存减去 4 MB。工作负荷处理任务重的 SQL Server 实例保留的可用物理内存为范围的较低端 (4 MB);工作负荷处理任务轻的实例保留的可用物理内存为范围的较高端 (10 MB)。
  SQL Server 实例的目标随工作负荷的改变而变化。当更多的用户连接并产生更多的工作时,该实例倾向于获取更多的内存以使可用的内存保持在 4 MB 的限制以下。当工作负荷减轻时,该实例将其目标调整为 10 MB 的可用空间,并释放内存给操作系统。将可用空间量保持在 10 MB 与 4 MB 之间可防止 Windows NT 或 Windows 2000 过多执行换页操作,同时使 SQL Server 得以获得尽可能最大的高速缓冲存储器而不至引起额外的交换。
  实例的目标内存设置与数据库缓冲池的页相对于可用池大小的需求有关。在任何即时点,缓冲区页的总需求取决于满足所有当前执行的查询所需的数据页数。如果相对于高速缓冲存储器内的页数,数据页的需求很大,则当前在缓冲区内的每一页很可能在相对较短的时间内由新页替换。这可由"缓冲区管理器"对象的"页生命期"性能计数器来度量。对于相对较小的缓冲区有较高需求的情况将生成短生命期,而纯粹的影响就是使 I/O 增加,因为在页可由多个逻辑读取引用之前往往要被重写。为减轻这个问题,数据库引擎可以获取更多的内存以增加高速缓冲存储器的大小。当页生命期长时,数据库引擎将可用内存定位于目标的高端 (10 MB);而当页生命期短时,数据库引擎定位于目标范围的低端 (4 MB)。为了不影响性能,我的平台用了8G的内存.
  随着其它应用程序在运行 SQL Server 实例的计算机上启动,它们消耗内存致使可用物理内存量降到 SQL Server 的目标以下。SQL Server 实例于是从其地址空间释放足够内存,以使可用内存量回到 SQL Server 的目标。如果有其它应用程序停止运行而使可用内存增多,SQL Server 实例将增加其内存分配大小。SQL Server 可以每秒释放并获取几 MB 字节的内存,这使它得以根据内存分配变化作出快速调整。

转载于:https://www.cnblogs.com/ph00/archive/2010/05/18/1738551.html


http://www.ppmy.cn/news/164029.html

相关文章

linux调查java内存泄漏_记一次Java内存泄漏排查

起因: 最近新上线的服务内存(部署在linux平台)每天一天都会上涨一点点,现象如下图所示。想到每天要通过一个SO库与一个数据源进行TCP的连接与断开,于是便展开排查工作。 现象.jpg 因为不是紧急的线上问题,于是在开发站搭建环境进行问题重现。主站上面程序是每天9点进行连接…

固态硬盘能提高服务器内存吗,内存涨疯了!固态硬盘能替代内存吗?

原标题:内存涨疯了!固态硬盘能替代内存吗? Intel第八代酷睿处理器即将在10月5日上市,不过网友们讨论的最热门话题却是内存贵上天了,买得起CPU买不起内存啦!单条8G DDR4内存从299一路涨到829,天了…

python吃显卡还是内存条_Python 内存分配时的小秘密

作者:小小程序员 链接:https://zhuanlan.zhihu.com/p/87965987 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Python 中的sys模块极为基础而重要,它主要提供了一些给解释器使用(或…

android—性能优化2—内存优化

文章目录 性能优化:工具:memory profilerLeakCanaryarthookepic 库 java内存管理机制java 内存回收机制Android内存管理机制Dalvik与 Art区别Low Memory Killer 内存抖动解决内存泄漏解决第一个内存泄漏点内存很大的bitmap第一个地方 生成二维码的时候每隔一定时间会动态创建二…

vue项目中的内存泄漏

vue中内存泄漏的问题 Q:前几天项目遇到了一个问题,访问页面导致内存不断上涨。 A:原因是在跳转路由销毁页面的时候,并没有释放内存。 接下来就开始查找资料,去排查到底是哪部分的问题,导致内存不释放。 以…

thrift OOM 内存溢出

最近经常发生thrift服务半夜宕机的问题,虽然是测试环境,但是每天早上重启也很恶心。 经过很长时间的摸索,终于找到了原因。先说背景: 我们用的thrift版本是0.9.2,用做service的rpc框架,某一天开始&#x…

docker mysql内存 涨_docker容器内存占用过高(例如mysql)

简介 该文章适用于配置低,特别是内存低的服务器,在用容器部署服务时有可能会因为容器占用内存过高导致服务挂掉时参考解决(不是运行在容器里的话,也是可以修改mysql的配置文件限制内存占用) 最近用docker部署了个系统,服务器配置是…

苹果运行内存比较_iPhone手机的内存,为什么这几年一直没有像安卓这样升级

iPhone12系列刚刚发布,手机还没有到用户手中,关于下一代iPhone13的消息初见端倪,不过大部分消息都是捕风捉影,很难有事实依据作为支撑。也有一些消息可靠性比较高,比如苹果依旧没有放弃Touch ID相关研究,有可能在下一代回归。 iPhone 5s,运行内存1G,同时期安卓2G(2013)…