在网上也找了很久,好多人都说sql的内存分配机制,稍微占用多一点的内存是正常的,不影响使用。但我这种情况明显不正常,sql的执行效率极低,会不会是其他的什么原因。我把服务器重启后,才开始访问还很快,等sql占用的内存攀高以后,整个网站就跟蜗牛一样了。郁闷。

解决方案 »

  1.   

    roy_88 
    中国风_燃烧你的激情!!! 
    等 级:
     发表于:2007-11-24 10:34:482楼 得分:0 
    用事件探测器查看一下原因 
    ===================== 小弟经验不足,看也看不出什么原因,能不能说说有可能导致 这种情况 的原因,那样找也有个目标。谢谢了。
      

  2.   

    happyflystone 
    无枪狙击手 
    等 级:
     发表于:2007-11-24 10:37:213楼 得分:0 
    会不会是系统本身装得就有问题呀 
     
    ===========================但如果把sql停掉,系统用的也挺正常。sql内存攀高以后,它还占用10到30的cpu,那样系统就很慢了。很容易出现假死的现象。
     
     
      

  3.   

    SQL比较喜欢把东西都放在内存里面,自然是越多越好。限制一下就可以了。
    -- 打开SQL高级选项设置
    USE master
    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE WITH OVERRIDE-- 设置最大内存为 512M
    USE master
    EXEC sp_configure 'max server memory (MB)', 512
    RECONFIGURE WITH OVERRIDE
      

  4.   

    补充,SQL的内存不要设置得太小,否则物理I/O增多,会更慢。
    可以多尝试几个值,找到一个系统的平衡点。
      

  5.   

    最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统
    统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。  其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。  所以用于关联和排序的列上一般需要有索引。  再其次就是对执行计划、系统数据的存储,这些都是比较小的。  我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候mssql会释放内存,但是线程切换、io等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置mssql的最大内存使用。可以在sql server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制mssql对内存的使用。  然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。
      

  6.   

    问题还没解决,准备下午去机房把SQL重装一遍。
      

  7.   

    ivyrich 
     
    等 级:
     发表于:2007-11-25 22:06:1710楼 得分:0 
    问一声,你重装的OS,是64吗? 
     
     
     
    ==============不是,32的
      

  8.   

    如果说内存一直维持在1G左右,那么的确是小了一点SqlServer2005本身运行就需要很多内存,更何况还要多用户同时查询数据这样的情况需要升级服务器了,不过重装的问题,个人学习这样的内存是足够了
      

  9.   

    前几天同事装新服务器,最先用64位的2003, 再安装SQL2005, 他装好后我试着使用,觉得慢得很,然后他又重装了,改用32位的,现在速度比之前快了. 
      

  10.   

    hb_gx 
    高升 
    等 级:
     发表于:2007-11-26 12:44:5715楼 得分:0 
    如果说内存一直维持在1G左右,那么的确是小了一点 SqlServer2005本身运行就需要很多内存,更何况还要多用户同时查询数据 这样的情况需要升级服务器了,不过重装的问题,个人学习这样的内存是足够了 
     
    =====================================没看懂红色的那句。我觉得是sql安装的有问题导致的这种情况。也观察几天了,最大嫌疑就在sql上。
      

  11.   

    问题解决了。但不是SQL的问题,网络的原因哈。
    谢谢各位了。
      

  12.   

    网络会影响到SQL的内存占用???