关于SQL Server 在win2000下内存无法释放的问题(最终结果)

w0017 2002-06-26 02:45:55
我已经打过ms的技术支持电话了
基本上,是SQL Server本身的问题
ms不提倡通过应用程序释放,也没有告诉我怎么释放

看来这个问题基本上,没法解决,只能设置个内存最大值了
...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CDINnet 2002-06-28
  • 打赏
  • 举报
回复
SQL Server在默认状态,会自动将自己的最大使用内存和CPU线程设为最大,如你的系统内存为512M,那么SQLServer的默认最大内存也是512M,而CPU的最大工作线程为“255”。

所以可以想象,一旦SQLServer进行大批量数据的检索,建立大数据量的临时表,或者运行一些多表关联的查询和修改时,整个系统的资源就基本被完全占有。而如果你的服务器同时还承担着其他一些服务,如IIS,Exchange Server等,那么必然导致系统资源紧张,从而争抢线程,导致系统完全堵塞。

所以碰到此类问题只能预防:

1. 根据数据库的服务量,配置合理的硬件,如果服务量很大,那么最好只安装SQL Server这种大型的服务软件。
2. 适当的增加虚拟内存,但过高反而会影响速度。
3. 将系统内存资源至少拿出50M供Windows使用,也就是说SQL Server的最大使用内存=系统总内存-50(如果你安装了其他服务软件 ,那么还需减少SQL Server的最大使用内存)
4. 适当的减少SQL Server的最大CPU工作线程,比如改为220,或者200等。
5. 其他就要从内部来优化:比如减少一次性读取得数据量,比如你需要读取10万条记录并进行修改,那么最好分批次循环来执行,如一次只处理2000条。

其他:在测试存储过程的时候,最好打开任务管理器,宏观监控系统资源,然后优化你的存储过程。
CDINnet 2002-06-27
  • 打赏
  • 举报
回复
SQL Server是有这个问题,如果承担太多的后台服务,或者运行大批量的检索查询后,内存一直无法释放,甚至会导致线程堵塞。

所以首先为了放置系统堵塞,可以把SQL Server的最大内存,和CPU线程分配小一点。

其次,如果不是实时数据服务的话,可以手动或者写个小程序,定时关闭一下SQL Server的服务,然后重新打开。

总之一个字:烦!
bluepower2008 2002-06-27
  • 打赏
  • 举报
回复
一般来说中等到大型的应用系统,数据库服务器应该是单独的,内存至少512m以上,处理os的内存需求,其他最好都让sqlserver使用,可以提高性能。
为什么要释放内存呢?
如果只是测试或开发环境,重启服务就行了。
w0017 2002-06-27
  • 打赏
  • 举报
回复
肯定不是因为病毒

与数据库的连接最后肯定是释放了,我在sql的管理器里查看过

但不知道为什么就是释放不了占用的内存

有人说在NT下没问题。
w0017 2002-06-27
  • 打赏
  • 举报
回复
点数已经增加,CDINnet(CDIN.Net) 能仔细讲一下上面的问题么?
w0017 2002-06-27
  • 打赏
  • 举报
回复
甚至会导致线程阻塞?能说得具体一点么?谢谢



p.s.怎么增加“问题点数”啊?
hzm_8 2002-06-26
  • 打赏
  • 举报
回复
兄弟不要泄气,继续找原因。找出到底什么影响了你的资源,会不会是WINDOWS操作系统的原因,比如说病毒。
拭目以待。
yongwc 2002-06-26
  • 打赏
  • 举报
回复
我的看法是没有必要自己去放内存,由操作系统管理吧
而且sql 一般会为系统留下4M-10M 的物理内存给os
w0017 2002-06-26
  • 打赏
  • 举报
回复
鱼焖。

我打电话的时候偷偷想:
如果sql server不是第一大软件公司的产品,只因为这个问题,也会被n多人抛弃的
gzj0815 2002-06-26
  • 打赏
  • 举报
回复
没有听明白,我做完后,都是这样
set myrst=nothing
set conn=nothing
也不知道是不是你说的最终释放内存。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧