`
evget
  • 浏览: 139371 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

SQL Server数据库内存增加的问题分析

阅读更多
文章关键字:|SQL Server|数据库|内存|增加|分析|引擎|I/O|

  当 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)。

  随着其它应用程序在运行 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的内存管理机制决定的。



原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9266
分享到:
评论

相关推荐

    优化Microsoft SQL Server数据库内存配置

    内存是影响Microsoft SQL Server系统性能的一个重要因素,SQL Server数据库安装时将 为具有32MB物理内存的机器缺省配置16MB可用内存,16MB物理内存的机器缺省配置4MB可用内 存。应在Microsoft SQL Server数据库安装...

    SQL Server数据库占用过多内存的解决方法

    此文档中详细记载了,SQL Server数据库占用过多内存的解决方法,希望可以帮到下载的朋友们!

    优化SQL Server数据库服务器内存配置

    在大多数情况下,为了充分发挥Windows NT 4.0系统效能,内存的作用比起处理器的处理能力更具有影响力,特别是在客户/服务器模式环境...本文主要介绍利用如何优化SQLServer数据库服务器的内存配置提出一些认识和看法。

    sqlserver内存释放

    sqlserver 内存释放

    SqlServer数据库性能优化详解

    为最有效地优化 Microsoft® SQL Server™ 2000 的性能,必须在极为多样化的情形中识别出会使性能提升最多的区域,并对这些区域集中分析。 虽然其它系统级性能问题(如内存、硬件等)也是研究对象,但经验表明从这些...

    SQL Server的内存为何不断增加

    当SQL Server数据库引擎运行时,其默认内存管理行为并不是获取特定的内存量,而是在不产生多余换页I/O的情况下获取尽可能多的内存。为此,数据库引擎获取尽可能多的可用内存,同时保留足够的可用内存以防操作系统...

    如何查看SQLServer数据库每个表占用的空间大小

    CREATE PROCEDURE [dbo] [sys viewTableSpace] AS BEGIN SET NOCOUNT ON; CREATE TABLE [dbo] #tableinfo 表名 [varchar] 50 COLLATE Chinese PRC CI AS NULL 记录数 [int] NULL

    SQL Server数据库查询速度慢原因及优化方法

    【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有...

    SQL SERVER内存数据库

    详细描述了SQL SERVER内存数据库的各种特性和限制,并列举了典型的实例

    浅谈优化SQLServer数据库服务器内存.doc

    浅谈优化SQLServer数据库服务器内存.doc

    SQL_Server_2008_R2_CPU_和_内存_最大优化_分配

     一些解决方案供应商也曾尝试利用服务器虚拟化作为给个别SQL Server数据库分配资源的一种途径。在这种模型中,每台虚拟机只托管一个SQL Server数据库。这种方法也可行,但是虚拟机和他们的操作系统也消耗了一些本该...

    浅谈优化SQL Server数据库服务器内存配置的.pdf

    浅谈优化SQL Server数据库服务器内存配置的.pdf

    我见过最好的SQLServer数据库备份恢复工具(绿色免安装版)

    6、粒度化的日志管理模式,可查阅并分析到SQL数据库备份/恢复操作细节; 7、自动备份支持zip压缩,FTP上传、Email发送功能,可自由设置自动删除某天前SQL数据库备份; 8、完美支持超大SQL数据库备份(经测试:支持10...

    如何使用SQL Server数据库进行网络链接

    将一个SQL Server实例配置为不侦听网络协议后,同一计算机上的所有应用程序都将使用共享的内存网络库与之进行通信。关闭网络协议支持并不意味着网络协议具有固有的不安全性。任何时候某一程序访问一项外部资源时,该...

    SQL Server数据库监控工具

    监控SQL Server的CPU、内存、磁盘、缓存和缓冲利用率等数据。

    SQL SERVER 2000 内存扩展

    它为运行Windows Server2003x64 Edition的SQL Server2000用户在64位计算架构上运行32位的SQLServer应用软件扫清了障碍。  这名代表指出,SP4是一款补丁软件包,主要解决安全性、性能、适用性问题。她说,除了补丁...

    改善SQL Server数据库的内存管理方法

    我们可以通过设置SQL Server 数据库引擎使用的内存的上下限来达到此目的。其具体步骤是: 打开企业管理器,展开服务器组。单击该服务器,点击鼠标右键,单击属性菜单。 在弹出的对话框中单击内存选项卡。

    核心业务的SqlServer日常巡检项目

    巡检对于广大的数据库管理员(DBA)来说是日常工作了。对于巡检的过程和步骤却千差万别,有些DBA几分钟就巡检完了。巡检的内容也差别很大,简单的巡检就检查:...以下是本人对Microsoft Sql Server 的日常巡检的见解。

    50种方法巧妙优化你的SQL Server数据库

     4、内存不足    5、网络速度慢    6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)    7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)    8、sp_lock,sp_who,活动的用户...

    SQLServer数据库体系结构

    实例包括SQLServer占用的内存及后台线程。与Oracle显著不同的是,SQLServer服务器的数据库是多个,其中包括5个系统数据库及若干个用户数据库(其中的resource数据库存储系统数据,对用户不可见)。每个数据库包括数据...

Global site tag (gtag.js) - Google Analytics