数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

解决SQL Server虚拟内存不足情况


发布日期:2023年03月30日
 
解决SQL Server虚拟内存不足情况

症状

在具有 GB 或更多 RAM 的计算机上除了 MB (SQL Server ) 或 MB (SQL Server ) 虚拟地址空间之外SQL Server 在启动过程中保留剩下的所有虚拟地址空间以供缓沖池使用另外为了存储数据和过程缓存SQL Server 使用缓沖池内存为来自 SQL Server 进程的大多数小于 KB 的其他内存请求提供服务剩下的未保留内存准备用于不能从缓沖池得到服务的其他分配这些分配包括但不限于以下各项 &#;SQL Server 创建的所有线程的堆栈和关联的线程环境块在 SQL Server 创建了所有 个工作线程之后这大约为 MB

&#;由在 SQL Server 地址空间(根据具体系统而有所不同)中运行的其他 DLL 或进程进行的分配 &#;任何链接的服务器中的 OLE DB 提供程序

&#;通过使用 sp_OA 系统存储过程或扩展存储过程加载的 COM 对象

&#;加载到地址空间中的任何映像(exe 或 dll)这些映像通常使用 MB但是如果您使用链接的服务器sp_OA 或扩展存储过程则这些映像可能使用更多的空间

&#;进程堆和 SQL Server 可能创建的任何其他堆在启动过程中此空间通常为 MB但是如果您使用链接的服务器sp_OA 或扩展存储过程则此空间可能更多

&#;来自 SQL Server 进程的大于 KB 的分配例如较大查询计划网络数据包大小配置选项接近于 KB 时发送和接收缓沖区等情况所需要的分配要查看此数字请查找在 DBCC MEMORYSTATUS 中报告的 OS Reserved 值该值是作为 KB 页的数目报告的通常该值为 MB

&#;跟蹤缓沖池中每个缓沖区状态信息的数组该值通常约为 MB除非 SQL Server 运行时启用了地址窗口化扩展插件 (AWE)在这种情况下该值将会显着提高

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

通过使用 g 启动参数您可以指示 SQL Server 保留附加的虚拟内存可用以便这些与日志相关的分配和其他正常分配加在一起也不会用完虚拟地址空间

下表根据数据库的数目和服务器版本列出 g 值的一些建议初始值 DatabasesSQL Server SQL Server

gN/A

gN/A

gN/A

gg

gg

gg

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

如果服务器上数据库的数目超过此数目Microsoft 建议您在运行该服务器之前进行慎重的考虑因为系统上具有如此数目的数据库所需的系统开销将占用缓沖池中的大量虚拟内存从而可能导致系统整体性能下降

上一篇:SQL Server应用程序中的高级SQL注入

下一篇:用ADO管理SQL Server数据库及其设备[1]