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

叽里呱啦494

叽里呱啦494

2016-01-29 15:57

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

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

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

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

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

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

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

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

展开更多 50%)
分享

猜你喜欢

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

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

SQL服务器内存有两种基本管理方法:动态分配和静态分配

SQLServer
SQL服务器内存有两种基本管理方法:动态分配和静态分配

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

iOS开发的UI制作中动态和静态单元格的基本使用教程

编程语言 网络编程
iOS开发的UI制作中动态和静态单元格的基本使用教程

通过非动态SQL语句在SQL Server中执行动态查询

编程语言 网络编程
通过非动态SQL语句在SQL Server中执行动态查询

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

改善SQL Server内存管理

SQLServer
改善SQL Server内存管理

SQL Server静态页面导出技术2

SQLServer
SQL Server静态页面导出技术2

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

代理入门系列之二(上手篇)

代理入门系列之二(上手篇)

routeros的简单使用说明

routeros的简单使用说明
下拉加载更多内容 ↓