改善SQL Server内存管理

  最近,为了能在数据库服务器中运行其他应用程序,在保持数据库操作系统版本不变的前提下对数据库服务器进行了软、硬件上的升级。在软件上,将操作系统从Windows 2000升级到Windows Server 2003;在硬件上,将服务器中的内存由原来的512MB增加到1GB(1024MB)。
  在升级后的开始几个星期之内,服务器在使用中表现良好。但是不久后就发现,在服务器上同时运行的其他应用程序却出现了异常,不时地报出内存分配不足的警告。经过几次跟踪后发现,原来是SQL Server吞去了大部分内存所致。被SQL Server占用的内存由升级前的不到400MB一下子增加到现在的900MB,并且有不断增长的趋势。
  通过查找原因才知道这是SQL Server 缓冲池的预期行为。默认情况下,在启动 SQL Server之后,SQL Server会根据操作系统报告的物理内存数来动态增大或缩小高速缓冲存储器的容量。只要可用物理内存大小保持在4MB到10MB之间,SQL Server 缓冲池就会继续增大(保留可用物理内存在4MB到10MB之间是为了避免操作系统因为缺少内存而频繁地换页)。如果物理可用内存变得较少的时候,则SQL Server会将一些内存释放给操作系统。
  为了使运行在服务器上的应用程序都能达到比较满意的效果,同时也为了能给其他应用程序分配足够的内存,需要采取措施限制SQL Server 的内存使用量。我们可以通过设置SQL Server 数据库引擎使用的内存的上下限来达到此目的。其具体步骤是:
  1.打开企业管理器,展开服务器组。
  2.单击该服务器,点击鼠标右键,单击属性菜单。
  3.在弹出的对话框中单击内存选项卡。
  内存设置方法有两种:
  1.设置min server memory和max server memory 在一个范围段内。
  比如,我们将它设置成最小0MB,最大255MB。这种方法在为一台服务器中运行多个应用程序分配内存时非常有用。
  2.设置 min server memory 和 max server memory 为同一数值。
  比如,可以将它最大和最小值都设置成255MB。这样的设置方法与窗口中的另一个选项“使用固定的内存大小” 相一致。
  虽然内存最小值和最大值设置是高级选项,但在设置完毕之后,最好还是先将SQL Server服务停止后再重新运行,以便SQL Server能更好地对内存进行合理安排。
 

时间: 2024-09-17 04:16:07

改善SQL Server内存管理的相关文章

数据库疑难讲解:改善SQL Server内存管理

最近,为了能在数据库服务器中运行其他应用程序,在保持数据库操作系统版本不变的前提下对数据库服务器进行了软.硬件上的升级.在软件上,将操作系统从Windows 2000升级到Windows Server 2003;在硬件上,将服务器中的内存由原来的512MB增加到1GB(1024MB). 在升级后的开始几个星期之内,服务器在使用中表现良好.但是不久后就发现,在服务器上同时运行的其他应用程序却出现了异常,不时地报出内存分配不足的警告.经过几次跟踪后发现,原来是SQL Server吞去了大部分内存所致

人人都是 DBA(IV)SQL Server 内存管理

原文:人人都是 DBA(IV)SQL Server 内存管理 SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache.Buffer Pool.Memory Clerks 等.本文仅是管中窥豹,描述常见的内存管理相关概念. 在了解内存管理之前,通过 sys.dm_os_memory_clerks 视图可以查询内存的使用职责(Memory Clerks),也就是内存的消耗者. SELECT [type], SUM(pages_kb) AS tota

为何SQL SERVER内存会不断增加

SQL SERVER内存会不断增加 当 SQL Server 数据库引擎在 Microsoft Windows NT 或 Windows 2000 上运行时,其默认内存管理行为并不是获取特定的内存量,而是在不产生多余换页 I/O 的情况下获取尽可能多的内存.为此,数据库引擎获取尽可能多的可用内存,同时保留足够的可用内存以防操作系统交换内存. SQL Server 实例在启动时通常获取 8 到 12 MB 的内存以完成初始化过程.当实例完成初始化后,就不会再获取更多的内存,直到用户连接到该实例并开

SQL SERVER 内存分配及常见内存问题(1)——简介

原文:SQL SERVER 内存分配及常见内存问题(1)--简介 一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加:       首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解SQL SERVER与windows是如何协调.共享内存.并且SQL SERVER的内部对内存的管理机制. 2.在Windows 2003以上版本运行的SQL Server,内存使用量突然急剧下降:      内存是Sqlserver的生命线.在errorlog中,出现一下情况:   

SQL SERVER 内存分配及常见内存问题(2)——DMV查询

原文:SQL SERVER 内存分配及常见内存问题(2)--DMV查询 内存动态管理视图(DMV): 从sys.dm_os_memory_clerks开始. SELECT [type] , SUM(virtual_memory_reserved_kb) AS [VM Reserved] , SUM(virtual_memory_committed_kb) AS [VM Committed] , SUM(awe_allocated_kb) AS [AWE Allocated] , SUM(shar

SQL Server内存理解的误区

SQL Server内存理解 内存的读写速度要远远大于磁盘,对于数据库而言,会充分利用内存的这种优势,将数据尽可能多地从磁盘缓存到内存中,从而使数据库可以直接从内存中读写数据,减少对机械磁盘的IO请求,提高数据读写的效率. 内存对数据库而言是如此的重要,因此只要在涉及数据库优化的地方,我们都可以看到内存的身影.我们通常会想尽各种办法来优化数据库内存的使用,比如开启AWE.设置最大内存.锁定内存页等,但在很多时候,我们实际上都不知道某个配置是否一定能够解决当前的问题,或者我们误以为会解决当前的问题

SQL SERVER 内存分配及常见内存问题 简介

一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加:       首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解SQL SERVER与windows是如何协调.共享内存.并且SQL SERVER的内部对内存的管理机制. 2.在Windows 2003以上版本运行的SQL Server,内存使用量突然急剧下降:      内存是Sqlserver的生命线.在errorlog中,出现一下情况:       这类问题往往不是sql server导致的,而是Window

SQL Server内存遭遇操作系统进程压榨案例

  来源于点击打开链接 场景: 最近一台DB服务器偶尔出现CPU报警,我的邮件报警阈(请读yù)值设置的是15%,开始时没当回事,以为是有什么统计类的查询,后来越来越频繁. 探索: 我决定来查一下,究竟是什么在作怪,我排查的顺序如下: 1.首先打开Cacti监控,发现最近CPU均值在某天之后骤然上升,并且可以看到SystemProcessor Queue Length 和 sqlservr%ProcessorTime 也在显著的变化. 2.从最容易入手的低效SQL开始,考虑是不是最近业务做了什么

SQL Server 权限管理

原文:SQL Server 权限管理 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/权限控制/管理/分配/登入名/数据库用户/角色 概述       对数据库系统而言,保证数据的安全性永远都是最重要的问题之一.一个好的数据库环境,必须明确每个用户的职责,并分配其对应的权限.同时出现问题了也可以找到根源. 你是否会有这样的需求: 给某个用户查询所有数据库的权限 给某个用户只有备份数据库的权限 给一个用户只有指定数据库的权限 给一个用户只有某个表的权限 给一个用户只有查看某些