请问sql2005的最优设置方案
win2003企业版,四核处理器,4G内存,注册表已改过可以识别,做数据库服务器使用,程序经查使用sql的查询。
近日客户端突然出现应用程序提示,该查询所需的内存不足。搜索了下相关知识,发现可能是默认的sql2005配置问题。
设置上有几个问题不明请高手回复
1、内存设置:最小默认0,我改成100 可否
2、内存设置:最大默认24**********(MB) 疑惑,这里的MB是指物理内存容量吗,我改成了2500 这样可否
3、sql查询优先, 我勾上了
4、据说多核处理器对sql2005 反而会降低性能,我也改成不使用多核了
5、现在暂时不出现类似提示了,但以上设置是否合理,心理还是没准,是否有更优方案呢。
6、其他方面还有要注意的吗。
谢谢!
------解决方案--------------------应用程序提示,该查询所需的内存不足
这个提示一般到不是缺内存的表现,而是你的有些sql语句太复杂,特别是:
select *
from tb
where id in (1,2,3,4,5,6,7,......)
这种语句,或者类似的语句会报上面的错的。
------解决方案--------------------
一般,如果数据不需要在多个会话中共享,那么用#作为临时表更好。这样会话一结束,临时表就会删除,资源就会释放
------解决方案--------------------内存不足,并不一定真的是内存不足。
1、执行大数据的查询太多了(查询中常会十万条记录这样的,有些查询语句临时表很多用的是全局##,是否用#更合适,是否与这个有关呢
)。
2、你的内存只有4G,可以增加一条4G内存,内存也不贵。
3、不需要设置内存最大和最小值。
4、需要手动优化T-SQL语句。
5、查看服务器哪些程序占用内存比较多。
6、程序和服务器分离。
------解决方案--------------------4、据说多核处理器对sql2005 反而会降低性能,我也改成不使用多核了
说一下这个,多核处理器会降低性这个我还没遇到过,只是非常少的例子了。如果你不用多核了,如果交易频繁的话你会遇到CPU性能问题。
如果你是担心并行计划的问题,那么你可以用多核而把并行计划改为1。 MAXDOP(1)
------解决方案--------------------改配置只是最后方式,最重要还是优化代码
------解决方案--------------------另外还要说一下内存不足的问题,这个跟很多有关系,比如复杂的IN,MemroyToLeave不够等等都有可能造成,要具体的分析才有结果。找到那里占用了最多的内存然后看是否正常。