SQL Server中的动态和静态内存分配

2016-01-29 15:57 32 1 收藏

SQL Server中的动态和静态内存分配,SQL Server中的动态和静态内存分配

【 tulaoshi.com - SQLServer 】

SQL服务器有两种基本管理方法:动态分配和静态分配,用以控制程序可使用的内存数量。动态分配允许管理员声明一块内存的大小;考虑到它的实际使用,SQL服务器可以分配给其需要占用的内存的最大值,并且(理论上)在没有使用内存的情况下将其释放。静态分配则是创建一块固定的内存空间,提供给SQL Server使用——不再进行分配。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

在默认情况下,SQL Server被设置成动态分配,分配给其正在运行的计算机内所有可用的物理内存。许多管理员注意到SQL Server内存随时间的流逝被逐渐消耗殆尽时,其原因很可能是故障或是内存漏洞,但这个程序正是被设计成这样的。SQL Server就是要在任何可能的情况下在电脑中运行,并因此为达到其最佳性能而使用所有可用的内存。如果SQL Server在独立的机器中运行,那么就让它分配和释放其需要的内存吧。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

在一个小型商业服务器机器中,SQL可能与其他程序,如IIS,同时运行,管理员或许尝试着进行设置,使SQL Server运行在一块固定大小的内存,目的是控制其不会占用用于共享的内存。但这并不一定能如愿以偿。一方面,将内存的最高限度设置得太低,并且没有分配给SQL服务器足够的可用内存来用作类似事务日志或查询执行的缓存,所有这些都很难办到。使SQL服务器得到执行操作所需内存的惟一方法就是换出其他的页面,这是个缓慢的过程。

有许多方法可以计算出最好的内存分配。如果你有可预知的用户负载,依照用户所需的最大数目分配给他们。微软推荐至少用4 MB用作动态的最大空间,这已经成为一个可能的规则。如果你的用户负载变化范围很大——如以下情况,当你通过IIS 的前端连接到公共的因特网来支持你的数据库服务的时候——实时的统计数据将会比仅凭猜测所作的工作帮助更大。在高峰期,把SQL Server的高速缓存命中率和每秒缺页率等性能数字搜集起来。如果这些数据表明SQL Server正在做大量的交换,那么增加最大内存空间直到交换逐渐减少。每秒一次或更多次的交换是有坏处的。

另一种选择是使“为SQL Server预留物理内存”的选项可用,这可以防止SQL Server把已经分配给它的内存换出,即使当其他应用程序能够使用它时。这可以叫做是一把双刃剑:它既可以相当大程度的提高性能,也可能带来更大的性能损害。在有许多RAM 可以共享的(1 GB 或更多)的系统中,这是值得一试的,但是当有其他关键的进程可能突然需要大量的内存时,这种办法是不应该使用的。(并且如果需要的话,SQL Server可能会被迫放弃一些它自己的内存)。如果SQL Server是在独立的机器上运行,用这种办法最佳化性能则是值得的。

来源:https://www.tulaoshi.com/n/20160129/1496859.html

延伸阅读
今天一个朋友电话过来咨询我有关 Windows Server 2003 32bit 企业版最大支持的物理内存容量,主要是因为正在运营的一台数据库服务器内存使用达到 2G,服务器效率非常低打算扩展内存,为 SQL Server 提供更多的内存。 经过确认,服务器是 HP G3 系列支持 PAE,即物理地址扩展,服务器应该最大支持 32GB,而 Windows Server 2003 32bit...
如果您碰到SQL Server服务造成内存不断扩展最终系统死机等情况,请按照以下方法解决。 原理:SQL Server 2000引入的动态内存分配机制,一般不能很好的回收内存,如果计算机一直不关闭,就会发生内存耗尽的可能。您可以选择每周关机一次来避免,或者是按照下述方法来抑制内存的增长。 1、在服务器上开始—Microsoft SQL Server—...
假设我们要开发一个String类,它可以方便地处理字符串数据。我们可以在类中声明一个数组,考虑到有时候字符串极长,我们可以把数组大小设为200,但一般的情况下又不需要这么多的空间,这样是浪费了内存。对了,我们可以使用new操作符,这样是十分灵活的,但在类中就会出现许多意想不到的问题,本文就是针对这一现象而写的。现在,我们先来开发一...
标签: 网络
静态IP与动态IP的区别 1、为什么还会存在静态IP的用户,而不是所有人都是在用动态IP,来增加IP地址的使用灵活性呢?这里要说一下DNS。但是网络世界中,数据的传输是以IP地址来作为源、目的地址,而非一个网站地址。这时候,DNS作用就是将网站地址翻译成IP地址,来方便用户的记忆。所以,为了不需要经常更新DNS的记录,静态IP地址的作用就...
在网上查资料时看到几篇介绍 linux driver 编写的文章,其中提到 kmalloc()与 __get_free_page()返回地址的问题,我们都知道 kmalloc() 与 __get_free_page() 分配的是物理内存,但它返回的到底是什么?那几篇关于驱动编写的文章中提到申请的是物理地址,返回的依然是物理地址。但有一篇文章中,作者 对此提出了质疑,但没有给出答案。这也就...

经验教程

209

收藏

38
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部