2024年1月18日发(作者:)
服务器内存选项
使用两个服务器内存选项
min server memory和
max server memory
重新配置缓冲池中
。 Microsoft® SQL Server™
实例所使用的内存量(以 MB
为单位)默认情况下,SQL Server
能够可用系统资源动态改变它的内存需求。min server memory
的默认设置为 0,(2GB)。可以为
max server max server memory
的默认设置为 2147483647memory
指定的最小内存量为 4 MB。
当 SQL Server
动态使用内存时,它要求系统定期地检测可用的物理内存数量。SQL Server
根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在 4 MB
到 10 MB
之间。这就避免了 Microsoft Windows NT® 4.0
或 Windows® 2000
换页。如果有较少可用内存,则 SQL Server
将内存释放给 Windows NT
或 Windows 2000,后者通常继续使用可用列表。如果有更多可用内存,则 SQL Server
将内存再提交到高速缓冲存储器。SQL Server
仅在其工作负荷需要更多的内存时才增加高速缓冲存储器的内存;处于休眠状态的服务器不增大其高速缓冲存储器。
允许 SQL Server
动态使用内存是推荐使用的配置;然而,可以手工设置内存选项并且可以禁止 SQL Server
动态使用内存的能力。在设置 SQL Server
使用的内存量之前,应确定适当的内存设置,方法是从全部物理内存中减去 Windows NT 4.0
或 Windows 2000
以及
SQL Server
的任何其它实例所需要的内存(以及其它系统使用的内存,如果该计算机不为
。这就是可以分配给 SQL Server
使用的最大内存量。 SQL Server
专用)说明
如果您已经安装并且运行了全文检索支持功能(Microsoft
检索服务,亦即
,那么您必须手工设置
max server memory选项,为 MSSearch
服务运行预MSSearch)留足够的内存。max server memory
设置必须与 Windows NT 4.0
虚拟内存大小一起进行调整,以便使得保留给全文检索的虚拟内存是物理内存的 1.5
倍(不包括计算机中其它服务所需的虚拟内存)。应这样配置 SQL Server
max server memory选项,使得留有足够的虚拟内存满足全文检索内存需求。全部虚拟内存 -(SQL Server
最大虚拟内存 +
其它服务需要的虚拟内存)>= 1.5
倍物理内存。
手工设置内存选项
手工设置 SQL Server
内存选项有两种主要方法:
第一种方法,设置
min server memory和
max server memory为同一数值。该数值
与分配给 SQL Server
的固定内存量相对应。
第二种方法,把
min server memory和
max server memory数量设置到一个范围段内。这种方法在系统或数据库管理员希望配置 SQL Server
实例,使其适应在同一台计算机上运行的其它应用程序的内存需求时很有用。
min server memory保证了 SQL Server
实例使用的最小内存量。SQL Server
启动时不立即分配
min server memory
中所指定的内存量。但是,当内存使用由于客户端负荷而达到该值后,除非减少
min server memory
值。SQL Server
将无法从已分配的缓冲池中释放内存,
说明
不保证 SQL Server
分配
min server memory
中所指定的内存量。如果服务器上的负荷从不需要分配
min server memory
中所指定的内存量,则 SQL Server
将以较少的内存运行。
max server memory则可防止 SQL Server
使用多于指定数量的内存,这样剩余的可用内存可以快速运行其它应用程序。SQL Server
启动时不立即分配
max server memory
中所指定的内存。内存使用随 SQL Server
的需要而增长,直到达到
max server memory
中所指定的值。SQL Server
无法超过该内存使用值,除非增加
max server memory
值。
重要
服务器启动时,在地址窗口扩展 (AWE)
内存模式下运行的 SQL Server
实例确实分配
max server memory
中所指定的全部内存量。有关 AWE
内存的更多信息,请
参见管理 AWE
内存。
在应用程序启动和 SQL Server
释放内存之间将有一个较短的时间延迟,使用
max server
memory可以避免该延迟,从而可以提高其它应用程序的性能。仅当与 SQL Server
共享同一台服务器的新应用程序在启动时显示有问题时,才设置
min server memory。最好让 SQL
Server
使用全部可用的内存。
如果手工设置内存选项,应确保适当地设置用于复制的服务器。如果服务器是一个远程分发者或者是一个出版者/分发者的组合,则必须为它分配至少 16 MB
的内存。
理想情况下,在不引起系统交换页面到磁盘的前提下,应尽可能多地分配内存给 SQL
该值因系统不同而有很大差别。例如,在一个 32 MB
系统中,分配 16 MB
给 SQL Server。Server可能是合适的;在一个 64 MB
系统中,则可能适合分配 48 MB。
说明
当增大 SQL Server
内存数量时,应确保有足够的磁盘空间来容纳操作系统虚拟内存的支持文件()。有关虚拟内存支持文件的更多信息,请参见 Windows NT
4.0
和 Windows 2000
文档。
指定的内存数量必需满足 SQL Server
的静态内存(核心开销、打开的对象、锁等等)以及数据缓存(亦称高速缓存)的需要。
如有必要,在系统监视器(在 Windows NT 4.0
中为性能监视器)中使用统计功能帮助调整内存值。应该只有在您添加或减少内存,或者改变系统使用方式时改变这些值。
虚拟内存管理器
Windows NT 4.0
和 Windows 2000
随时提供一个 4 GB
的虚拟地址空间,其中较低的 2
并可由应用程序使用。较高的 2 GB
地址由系统保留GB
地址空间对于每个进程是专用的,使用。Windows NT Server
企业版为每个 Microsoft Win32®
应用程序提供 4 GB
的虚拟地址空间,其中较低的 3 GB
地址空间是每个进程专用的,并可由应用程序使用。较高的 1 GB
地址由系统保留使用。
4-GB
的地址空间由 Windows NT V虚拟内存管理器(VMM)映射到可用的物理内存空间。取决于硬件平台的支持,可用的物理内存可以高达 4 GB。
Win32
应用程序(如 SQL Server)只能识别虚拟(或称逻辑)地址,而不是物理地址。在给定的某一时刻一个应用程序使用多少物理内存由可用的物理内存和 VMM所决定。应用程序不能直接控制物理内存。
象 Windows NT 4.0
或 Windows 2000
这样的虚拟地址系统允许过度提交物理内存,这使虚拟内存和物理内存的比率大于 1:1。因此,较大的程序可以运行在具有不同物理内存配置的计算机上。然而应用比组合平均工作集大得多的虚拟内存可能导致较差的性能。
SQL Server
可以将内存锁定为工作集。因为内存被锁定了,当运行其它应用程序时可能出现内存不足的错误。如果出现内存不足的错误,则可能是分配给 SQL Server
的内存太多。set working set size选项(通过
sp_configure
或 SQL Server
企业管理器设置)
可以使锁定内存为工作集功能失效。默认情况下,set working set size选项处于禁用状态。
手工配置给 SQL Server
多于物理内存数量的虚拟内存会导致性能较低。而且,必须考虑
Windows NT 4.0
或 Windows 2000
操作系统的内存需求(大约 12 MB,因应用程序的开销而略有不同)。当 SQL Server
的配置参数上调时,系统的开销可能也会增长,因为 Windows
NT 4.0
或 Windows 2000
需要更多的常驻内存来支持附加的线程、页表等。允许 SQL
Server to
动态使用内存可以避免内存相关的性能问题。
min server memory和
max server memory是高级选项。如果要使用
sp_configure
系统存储过程改变该选项,必须把
show advanced options设置为 1,该选项立即生效(无需停止并重新启动服务器)。
管理 AWE 内存
Microsoft® SQL Server™ 2000
使用 Microsoft Windows® 2000 Address Windowing
Extensions (AWE) API
以支持非常大的内存空间。SQL Server 2000
可使用 Windows 2000
Advanced Server
或 Windows 2000 Datacenter Server
允许使用的所有内存空间。有关 AWE
API
的更多信息,请在 MSDN® Online Microsoft Web中搜索"awe memory"主题。
说明
仅有 SQL Server 2000
企业版和开发版提供此项功能。
使用 AWE 内存
若要使用 AWE
内存,必须在 Windows 2000
帐户下运行 SQL Server 2000
数据库引擎,并且已为该帐户指派了 Windows 2000
的"锁定内存页"特权。
如SQL Server
安装程序将自动授予 MSSQLServer
服务帐户使用"锁定内存页"选项的权限。果正在使用
从命令提示符下启动 SQL Server 2000
实例,则必须使用 Windows
否则在未作为服务2000
组策略实用工具 ()
为交互式用户帐户手工指派该权限,运行时,SQL Server
将不能使用 AWE
内存。
启用锁定内存页选项
在"开始"菜单上单击"运行"子菜单,然后在"打开"框中键入""。
在"组策略"控制台上,展开"计算机配置",然后展开"Windows
设置"。
展开"安全设置",然后展开"本地策略"。
选择"用户权限分配"复选框。
详细资料窗格中随即显示出策略。
在详细资料窗格中,双击"锁定内存页"。
在"本地安全策略设置"对话框中,单击"添加"按钮。
在"选择用户或组"对话框中,添加有权运行
的帐户。
若要使 SQL Server 2000
实例能够使用 AWE
内存,应设置
sp_configure选项为
awe
然后,重新启动 SQL Server
以激活 AWE。因为从 SQL Server
启动到 SQL Server
enabled。关机这段时间内一直启用 AWE
选项,所以,当
awe enabled处于使用状态时,SQL Server
将通过向 SQL Server
错误日志发送"已启用 Address Windowing Extension"消息通知用户。有关
awe
enabled
配置选项的更多信息,请参见 awe enabled
选项。
有关使用 AWE
内存的更多信息,请参见 Windows 2000
文档。
AWE 内存和系统资源
当启用 AWE
内存时,SQL Server 2000
实例并不动态管理地址空间的大小。因此,当启用
AWE
内存并启动 SQL Server 2000
实例时,将出现以下情况:
如果已设置
sp_configure
max server memory并且计算机上至少有 3
吉字节 (GB)
的可用空间,则实例将获得
max server memory所指定的内存空间。如果计算机上可用内存空间小于
max server memory(但大于 3 GB),则实例将获得几乎所有的可用内存,并可能至多剩下 128
兆字节 (MB)
的可用内存。
如果尚未设置
max server memory并且计算机上至少有 3 GB
的可用内存,则实例将获得几乎所有的可用内存并可能至多剩下 128 MB
的可用内存。
如果计算机上可用内存不足 3 GB,则动态分配内存,并且,不管
awe enabled
的参数设置如何,SQL Server
都将以非 AWE
的模式运行。
评估内存使用
不能将使用 AWE
的 SQL Server 2000
实例的内存池换出到页文件中。如果 Windows 2000
需要使用附加的物理内存,则必须换出其它应用程序,但这可能干扰其它应用程序的性能。
因此,必须确保除所有 SQL Server
实例使用的内存之外还有足够的内存,可满足计算机上
运行的其它应用程序的虚拟内存需求。
使用系统监视器(Microsoft Windows NT® 4.0
中的性能监视器)检索有关 SQL Server
内存使用及可用内存的信息。任务管理器不为 AWE
提供准确的内存使用信息。因此,报告的
若要获得正确的 SQL Server
内存使用情况,可使用
所占用的内存量并不正确。,或从
sysperfinfo"总的服务器内存 (KB)"性能计数器(该计数器可通过系统监视器激活)中选择内存使用。有关更多信息,请参见监视内存的使用。
运行多个实例
如果正在同一台计算机上运行多个 SQL Server 2000
实例,而每个实例都使用 AWE
内存,则必须确保:
每一个实例都有
max server memory
设置。
所有实例的
max server memory
值的总和小于计算机的物理内存量。
如果设置总和超过了计算机的物理内存,则一些实例或者不能启动,或者其内存将小于
max
server memory中指定的内存大小。例如,假设某计算机具有 16 GB
的物理 RAM,并且该计算机上运行 3
个 SQL Server 2000
实例。此外,每个实例的
max server memory
设置为 8 GB。如果停止并重新运行所有 3
个实例,则:
第一个实例启动时使用全部 8 GB
内存。
第二个实例启动时使用的内存将略低于 8 GB(最多减少 128 MB)。
第三个实例将以动态内存模式启动,此时只剩 128 MB
或更少的可用内存。
Windows 2000 使用考虑
针对 AWE
内存配置 Windows 2000
之前,请考虑以下事项:
若要启用 Windows 2000 Advanced Server
或 Windows 2000 Datacenter Server
支持大于 4 GB
的物理内存,必须将参数 /pae
添加到
文件中。
若要启用 Windows 2000 Advanced Server
和 Windows 2000 Datacenter Server
支持
3-GB
虚拟地址空间,必须将参数 /3gb
添加到
文件中。这使用户应用程序得以对 3 GB
的虚拟内存进行寻址,并为操作系统保留 1 GB的虚拟内存。
但是,如果计算机上有超过 16 GB
的可用物理内存,Windows 2000
则需要 2 GB
的虚拟内存地址空间供系统使用,因此,只能支持 2-GB
的虚拟地址空间。
为了使 AWE
能够使用超过 16 GB
的内存范围,应确保
文件中无参数 /3gb。否则,Windows 2000
将不能对超过 16 GB
的任何内存进行寻址。当在 32-GB
系统上分配
SQL Server AWE
内存时,Windows 2000
可能需要至少 1 GB
的可用内存以便管理 AWE。因此,在启用 AWE
的情况下启动 SQL Server
实例时,建议最好不要使用默认的
max
server memory
设置,而应将其限制为 31 GB
或更少。
有关更多信息,请参见使用 Windows 2000
上的 AWE
内存。
使用故障转移群集
如果正在使用 SQL Server 2000
故障转移群集和 AWE
内存,则必须确保所有实例的
max
server memory
设置值总和小于故障转移群集内任何服务器的最小可用物理 RAM
量。如果故障转移节点的物理内存比原节点少,则 SQL Server 2000
实例可能无法启动,或者可能以比在原节点上少的内存启动。
发布评论