none
SQLServer服务启动时占用了4G内存 RRS feed

  • 问题

  • 数据库配置如下:
    物理内存 8G
    分配给数据库的内存 最小值0,最大值6G
    数据库大小 12G
    当SQL服务启动时内存就占用了4G。

    手动设置内存时,设置内存为2G时,启动服务就占用2G。设为4G时,启用内存就为4G

    而且程序运行一段时间就会报内存不足的问题。

    请高手解答。
    2009年4月9日 13:25

答案

  • SQL 2000, 启用了AWE选项的话,则服务启动就会占用 max memory 设置的内存
    2005及之后的版本不存在这个问题
    2009年4月10日 19:20

全部回复

  • 数据库配置如下:
    物理内存 8G
    分配给数据库的内存 最小值0,最大值6G
    数据库大小 12G
    当SQL服务启动时内存就占用了4G。

    手动设置内存时,设置内存为2G时,启动服务就占用2G。设为4G时,启用内存就为4G

    而且程序运行一段时间就会报内存不足的问题。

    请高手解答。
    2009年4月9日 13:26
  • 再确认一下,在数据库内存选项里,最小内存是设为零吧? 另外,你说SQL Server服务启动的时候,就占用4G的内存,确信这个时候没有什么在数据库上进行的操作?
    2009年4月9日 14:30
  • Is it 32-bit or 64-bit machine?
    2009年4月9日 18:51
  • 是的,最小分配内存为0,最大为6G。
    您指的有什么在操作是什么意思?每次启动服务都是占用了一个固定值4.2G。

    另外还有点,服务器上安装了一些Oracle插件。

    2009年4月10日 2:14
  • 通过sp_configure 'min server memory ',xxx 配置的内存吗?
    这只是分配了buffer pool的大小。

    你如如何判断是sql server占用了4.2G内存?
    可以用DBCC MEMORYSTATUS 看看
    SQL Engine Test
    2009年4月10日 3:00
  • 不是通过sp_configure 'min server memory ',xxx 设的最小内存。
    但是是通过sp_configure 'max server memory ',xxx 设置的最大内存。

    我把性能监视器打开,启用服务器显示内存占用为300多M,启用的一瞬间变成4500M,关闭后又恢复到300多 

    2009年4月10日 3:05

  • 能不能执行一下: DBCC MEMORYSTATUS 看内存占用多少?
    然后再执行一下:
    select type, sum(multi_pages_kb) from sys.dm_os_memory_clerks where multi_pages_kb != 0 group by type
    看一下各个模块占用的内存是多少?
    2009年4月10日 16:02
  • Is it 64-bit machine?
    2009年4月10日 16:05
  • SQL 2000, 启用了AWE选项的话,则服务启动就会占用 max memory 设置的内存
    2005及之后的版本不存在这个问题
    2009年4月10日 19:20