WEB开发网
开发学院数据库MSSQL Server SQL SERVER内存会不断增加的问题分析 阅读

SQL SERVER内存会不断增加的问题分析

 2007-05-15 09:33:09 来源:WEB开发网   
核心提示: 实例的目标内存设置与数据库缓冲池的页相对于可用池大小的需求有关,在任何即时点,SQL SERVER内存会不断增加的问题分析(2),缓冲区页的总需求取决于满足所有当前执行的查询所需的数据页数,如果相对于高速缓冲存储器内的页数, 说明 如果使用默认设置,则 Microsoft® SQL

实例的目标内存设置与数据库缓冲池的页相对于可用池大小的需求有关。在任何即时点,缓冲区页的总需求取决于满足所有当前执行的查询所需的数据页数。如果相对于高速缓冲存储器内的页数,数据页的需求很大,则当前在缓冲区内的每一页很可能在相对较短的时间内由新页替换。这可由"缓冲区管理器"对象的"页生命期"性能计数器来度量。对于相对较小的缓冲区有较高需求的情况将生成短生命期,而纯粹的影响就是使 I/O 增加,因为在页可由多个逻辑读取引用之前往往要被重写。为减轻这个问题,数据库引擎可以获取更多的内存以增加高速缓冲存储器的大小。当页生命期长时,数据库引擎将可用内存定位于目标的高端 (10 MB);而当页生命期短时,数据库引擎定位于目标范围的低端 (4 MB)。

随着其它应用程序在运行 SQL Server 实例的计算机上启动,它们消耗内存致使可用物理内存量降到 SQL Server 的目标以下。SQL Server 实例于是从其地址空间释放足够内存,以使可用内存量回到 SQL Server 的目标。如果有其它应用程序停止运行而使可用内存增多,SQL Server 实例将增加其内存分配大小。SQL Server 可以每秒释放并获取几 MB 字节的内存,这使它得以根据内存分配变化作出快速调整。

你可以通过设置允许sql server可以使用的最大内存来做限制:最小和最大服务器内存的影响

min server memory 和 max server memory 配置选项建立由 SQL Server 数据库引擎使用的内存量的上限和下限。数据库引擎并不立即获取 min server memory 中指定的内存量。数据库引擎启动时只使用初始化所需的内存。随着数据库引擎工作负荷的增加,它将继续获取支持工作负荷所需的内存。数据库引擎直到到达 min server memory 中指定的内存量才会释放任何所需的内存。一旦到达 min server memory,数据库引擎将使用标准算法(使操作系统的可用内存保持在 4 MB 到 10 MB 之间)获取和释放所需内存。唯一的区别是数据库引擎从不将内存分配降到 min server memory 所指定的水平下,也从不获取超过max server memory 所指定水平的内存。

数据库引擎获取的内存量完全取决于放置在实例上的工作负荷。不处理很多请求的 SQL Server 实例可能永远达不到 min server memory。

如果为 min server memory 和 max server memory 指定相同的值,则一旦分配给数据库引擎的内存达到该值,数据库引擎将停止动态释放和获取内存。

如果在运行 SQL Server 实例的计算机上频繁启动或停止其它应用程序,启动这些应用程序所需的时间可能会因 SQL Server 实例分配和释放内存而延长。另外,如果 SQL Server 是几个在一台计算机上运行的服务器应用程序中的一个,系统管理员可能需要控制分配给 SQL Server 的内存量。在这些情况下,可以使用 min server memory 和 max server memory 选项控制 SQL Server 可以使用的内存量。

何设置固定的内存量(企业管理器)

设置固定的内存量

展开一个服务器组。

右击一个服务器,再单击"属性"。

单击"内存"选项卡。

单击"使用固定的内存大小 (MB)",然后将固定内存滑块放在适当的位置。

说明 如果使用默认设置,则 Microsoft® SQL Server™ 将动态配置内存。

这是由sql server的内存管理机制决定的。

上一页  1 2 

Tags:SQL SERVER 内存

编辑录入:coldstar [复制链接] [打 印]
赞助商链接