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

数据库 SQL Server
SQL Server 是一个关系数据库管理系统,功能性很好,SQL Server中存在虚拟内存,那么当遇到SQL Server中内存不足的情况时该如何处理呢?

导读:SQL Server数据库中能储存大量的数据,这就要求SQL Server数据库的内存足够大,虚拟内存在SQL Server数据库中也发挥着很大的作用,那么如果虚拟内存不足,大家可以试试下文中为大家介绍的方法,帮助大家解决虚拟内存不足的困扰。

症状:在具有 2 GB 或更多 RAM 的计算机上,除了 256 MB (SQL Server 7.0) 或 384 MB (SQL Server 2000) 虚拟地址空间之外,SQL Server 在启动过程中保留剩下的所有虚拟地址空间以供缓冲池使用。另外,为了存储数据和过程缓存,SQL Server 使用缓冲池内存为来自 SQL Server 进程的大多数小于 8 KB 的其他内存请求提供服务。剩下的未保留内存准备用于不能从缓冲池得到服务的其他分配。这些分配包括、但不限于以下各项:

  1.  SQL Server 创建的所有线程的堆栈和关联的线程环境块。在 SQL Server 创建了所有 255 个工作线程之后,这大约为 140 MB。
  2. 由在 SQL Server 地址空间(根据具体系统而有所不同)中运行的其他 DLL 或进程进行的分配,如: •任何链接的服务器中的 OLE DB 提供程序。
  3. 通过使用 sp_OA 系统存储过程或扩展存储过程加载的 COM 对象。
  4. 加载到地址空间中的任何映像(.exe 或 .dll),这些映像通常使用 20 到 25 MB,但是如果您使用链接的服务器、sp_OA 或扩展存储过程,则这些映像可能使用更多的空间。
  5. 进程堆和 SQL Server 可能创建的任何其他堆。在启动过程中,此空间通常为 10 MB,但是如果您使用链接的服务器、sp_OA 或扩展存储过程,则此空间可能更多。
  6. 来自 SQL Server 进程的大于 8 KB 的分配,例如较大查询计划、网络数据包大小配置选项接近于 8 KB 时发送和接收缓冲区等情况所需要的分配。要查看此数字,请查找在 DBCC MEMORYSTATUS 中报告的 OS Reserved 值,该值是作为 8 KB 页的数目报告的。通常,该值为 5 MB。
  7. 跟踪缓冲池中每个缓冲区状态信息的数组。该值通常约为 20 MB,除非 SQL Server 运行时启用了地址窗口化扩展插件 (AWE),在这种情况下,该值将会显著提高。

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

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

  下表根据数据库的数目和服务器版本列出 -g 值的一些建议初始值: DatabasesSQL Server 7.0SQL 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 建议您在运行该服务器之前进行慎重的考虑,因为系统上具有如此数目的数据库所需的系统开销将占用缓冲池中的大量虚拟内存,从而可能导致系统整体性能下降。

上文中的方法能够很轻松的帮助大家解决SQL Server中虚拟内存不足的问题,虚拟内存大了运行速度自然就上去了,大家的工作效率也就自然而然的提高了,大家何乐而不为啊?

【编辑推荐】

  1. 仅允许指定的机器连接SQL Server服务器
  2. SQL Server数据库维度表和事实表概述
  3. SQL Server数据库多种方式查找重复记录

 

责任编辑:迎迎 来源: dev.yesky.com 
相关推荐

2010-07-05 08:57:48

SQL Server虚

2010-06-10 17:12:23

Linux 内存监控

2010-07-06 09:27:01

SQL Server

2009-07-14 18:26:49

MyEclipse内存

2010-09-27 11:12:46

MyEclipseJVM内存

2010-06-02 12:47:12

Linux 内存监控

2020-03-18 19:00:29

电脑内存不足系统

2021-04-26 13:52:36

索尼Linux内存

2010-09-17 16:18:43

Java内存溢出

2017-08-15 11:00:33

LinuxSwap

2022-08-02 09:02:17

虚拟内存操作系统

2009-06-16 11:01:14

Java内存溢出

2012-05-02 16:28:25

Windows XP虚拟内存优化

2018-12-18 14:53:04

内存进程子进程

2014-02-27 13:30:26

CacheLinux系统内存不足

2020-04-14 16:03:31

Linux虚拟内存操作系统

2010-06-30 16:09:06

2010-06-30 08:46:40

Visual Stud

2019-12-26 08:45:46

Linux虚拟内存

2021-06-01 08:20:55

Linux虚拟内存命令
点赞
收藏

51CTO技术栈公众号