解决SQLServer虚拟内存不足情况

解决SQLServer虚拟内存不足情况,第1张

解决SQLServer虚拟内存不足情况,第2张

症状

在具有2 GB或更多RAM的计算机上,除了256 MB (SQL Server 7.0)或384 MB (SQL Server 2000)虚拟地址空之外,SQL Server在启动期间为缓冲池保留所有剩余的虚拟地址空。此外,为了存储数据和进程缓存,SQL Server使用缓冲池内存来处理来自SQL Server进程的大多数其他小于8 KB的内存请求。剩余的未预留内存被预留给不能从缓冲池服务的其他分配。这些分发包括但不限于以下内容:& # 8226;SQL Server创建的所有线程和关联线程环境块的堆栈。在SQL Server创建了所有255个工作线程之后,这大约是140 MB。

•由SQL Server地址空(视具体系统而定)之间运行的其他dll或进程分配,如:& # 8226;任何链接服务器中的OLE DB访问接口。

•通过sp_OA系统存储过程或扩展存储过程加载的COM对象。

•加载任何图像(。exe或。dll)在地址空中。这些映像通常使用20到25 MB,但如果使用链接服务器、sp_OA或扩展存储过程,这些映像可能会使用更多空空间。

•堆和SQL Server可能创建的任何其他堆。在启动期间,此空间隔通常为10 MB,但如果使用链接服务器、sp_OA或扩展存储过程,此空间隔可能会更长。

•来自SQL Server进程的大于8 KB的分配,例如大型查询计划、当网络数据包大小的配置选项接近8 KB时发送和接收缓冲区等所需的分配。要查看该数字,请查找DBCC内存状态中报告的操作系统保留值,该值报告为8 KB页面的数量。通常,该值为5 MB。

•跟踪缓冲池中每个缓冲区的状态信息的数组。该值通常约为20 MB,除非在SQL Server运行时启用了地址窗口化扩展插件(AWE ),在这种情况下,该值将得到显著提高。

在具有大量数据库的系统上,日志格式化所需的64 KB分配可能会占用所有剩余的虚拟内存。此后的分配将会失败,导致本文“症状”一节中列出的一个或多个错误。

通过使用-g启动参数,您可以指示SQL Server保留额外的可用虚拟内存,以便这些与日志相关的分配和其他正常分配不会耗尽虚拟地址空。

下表根据数据库数量和服务器版本列出了一些建议的-g值初始值:数据库SQL Server 7.0 SQL Server 2000

250-g134N/A

500-g185N/A

750-g237N/A

1000-g288-g288

1250-g340-g340

1500-g392-g392

此表是使用列出的典型值计算的,并且此计算基于没有使用链接、sp_OA或扩展存储过程的服务器活动的假设。它还假设您没有使用AWE和SQL事件探查器。以上任何一种情况都需要你增加-g的值。

如果服务器上的数据库数量超过此数量,Microsoft建议您在运行服务器之前仔细考虑,因为系统上拥有如此数量的数据库的开销将占用缓冲池中大量的虚拟内存,这可能会导致系统的整体性能下降。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 解决SQLServer虚拟内存不足情况

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情