文章编号: 316749 - 最后修改: 2007年2月13日 - 修订: 10.1 在 SQL Server 中使用大量数据库时,可能会出现虚拟内存不足的情况本文的发布号曾为 CHS316749 症状 当您使用默认配置值运行 SQL Server 时,如果满足以下所有条件,则 Microsoft SQL Server 进程中可能没有足够的可用虚拟地址空间:
消息 1Error:17802, Severity:18, State: 3 Could not create server event thread. 消息 2
SQL Server could not spawn process_loginread thread. 消息 3
WARNING:Clearing procedure cache to free contiguous memory.
Buffer Distribution:Stolen=3454 Free=2540 Procedures=138 Inram=0 Dirty=1108 Kept=35 I/O=0, Latched=0, Other=214821 Buffer Counts:Committed=222096 Target=222096 Hashed=215964 InternalReservation=547 ExternalReservation=0 Min Free=512 Procedure Cache:TotalProcs=8 TotalPages=138 InUsePages=138 Dynamic Memory Manager:Stolen=3556 OS=497 General=1706 Query Plan=755 Optimizer=0 Utilities=9 Connection=1583 Global Memory Objects:Resource=1119 Locks=163 XDES=1 SQLCache=90 Replication=5 LockBytes=2 ServerGlobal=20 Query Memory Manager:Grants=0 Waiting=0 Maximum=164370 Available=164370 原因 对于每个更新的数据库,SQL Server 至少会分配一个 64 KB 的块,用于在将日志记录写入磁盘前对日志记录进行格式化。当为数据库生成第一个日志记录时(例如在执行 INSERT、UPDATE 或 DELETE 语句的过程中)便会发生此分配。根据活动和生成的日志记录的大小,后续修改可能引发额外的 64 KB 分配。SQL Server 7.0 分配的 54 KB 的块不多于三个。在 SQL Server 2000 中,为每个数据库分配的上限数与为 SQL Server 配置使用的处理器数具有函数关系。
替代方法 使用 -g 启动参数使附加的、未保留的虚拟内存可用于这些数据库分配。-g 参数可以在 SQL Server 7.0 Service Pack 的 Readme.txt 以及 SQL Server 2000 联机丛书中找到。本文的“更多信息”一节包括 Microsoft 建议您使用的设置,以确定此设置适当的值。 更多信息 在具有 2 GB 或更多 RAM 的计算机上,除了 256 MB (SQL Server 7.0) 或 384 MB (SQL Server 2000) 虚拟地址空间之外,SQL Server 在启动过程中保留剩下的所有虚拟地址空间以供缓冲池使用。另外,为了存储数据和过程缓存,SQL Server 使用缓冲池内存为来自 SQL Server 进程的大多数小于 8 KB 的其他内存请求提供服务。剩下的未保留内存准备用于不能从缓冲池得到服务的其他分配。这些分配包括、但不限于以下各项:
在拥有大量数据库的系统上,日志格式化所需的 64 KB 分配可能会占用所有剩余的虚拟内存。这之后的分配将失败,导致本文的“症状”一节中列出的一个或多个错误。 通过使用 -g 启动参数,您可以指示 SQL Server 保留附加的虚拟内存可用,以便这些与日志相关的分配和其他正常分配加在一起也不会用完虚拟地址空间。 下表根据数据库的数目和服务器版本列出 -g 值的一些建议初始值: 收起该表格
如果服务器上数据库的数目超过此数目,Microsoft 建议您在运行该服务器之前进行慎重的考虑,因为系统上具有如此数目的数据库所需的系统开销将占用缓冲池中的大量虚拟内存,从而可能导致系统整体性能下降。 这篇文章中的信息适用于:
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。 | 文章翻译
|
回到顶端
