to  weixy() 
不管怎么样,先谢谢您了:)
希望大家出谋献策,要不我会很痛苦的:(
因为过一段时间又要重启一次,不合理,不会是微软的玩艺就得这样吧?!

解决方案 »

  1.   

    主要是内存的问题,sql6.5就不会出现这个问题,因为6.5的内存分配是固定的,而2000会不断地吃内存,造成操作系统内存不够,最好在SQL 2000设置合理的内存最大值。
      

  2.   

    to : tj_dns(愉快的登山者) 
    确实有多个线程在不断地同时访问一张表,但它们更新和修改的内容是不一样的,而其它的只是在用户只是在读取这张表的数据或将某些数据删除,在本人看来应该不会发生共享冲突,实在是搞不懂为什么随着时间的增长,性能会下降(下降的蛮快的,过了一个星期就有点受不了了)
    不管怎么样都为问题的解决提供了一个参考的方法,先谢谢您了^_^,希望您能继续关注,呵呵
      

  3.   

    to : weixy() 
    我也知道,可没办法呀(就目前而言),内存不会太小了吧,都1.2G了,而且要强调的是在系统开始运行时速度是很快的,只是在长时间持续运行后性能下降
      

  4.   

    to weixy() 
    我查过了命中率大概在93%呢,不算低了
      

  5.   

    因为是过了一个周而下降的,1。怀疑你的sql 语句可能存在查询优化问题,2建立相关的索引,3。检查数据库的空间分配和campatibility,statistics,
      

  6.   

    to Yang_(扬帆破浪) 
    应该不是这个原因,在SQL SERVER 7以上版本,默认的情况下数据库会占用几乎所有的内存,这是因为它的内存池一直在增加,直到整个系统的可用内存只有5MB左右才停止,并只在系统需要内存时才让出内存池中的内存而不管内存池中的内存在最近有没有被使用
      

  7.   

    to lonwang() 
    1、就假设存在查询优化问题,那也不至于开始很快而到后面就逐渐慢下来吧
    2、相关的索引都已建立了(呵呵,这个是我个人认为的^_^),我会再检查检查
    3、对3能说的具体些吗?谢谢了
      

  8.   

    to: robobird(不告诉你) 
       我同意Yang_(扬帆破浪) 的说法,你没有试一下怎么知道不是这个原因呢?一开始快说明不是索引、查询优化等问题。
      

  9.   

    我同意Yang_(扬帆破浪)的意見,同時我還懷疑win2000的內存管理,因為在我這里也會發生同樣的問題,只不過我是運行其他的程式. 
      

  10.   

    to 楼上两位兄弟
    对于Yang_(扬帆破浪)的意見我不是作了解释了吗?难道我的解释不成立,这一特性是微软数据库的一大改进呢,当除数据库以外的程序需要内存而系统自身已不能提供时,自动从数据库的内存池中释放部分不用的(里面有一G多呢,其中有好多暂时没用到的)供其它程序使用,因此看起来系统总是不够内存,呵呵。而且其它程序看起来运行得都很正常,使用的内存很稳定(至少看起来是这样的)。
    不知道我说的有没有道理,希望大家能够多提意见,搞不懂呀!现在脑子里连问号都没有!!!!
      

  11.   

    to : yinzhen(銀圳) 
    win 2000的内存管理应该还可以,如果我的程序里有跑线程,那么内存出现问题的可能性就非常大了,因为有些程序在非线程里一点问题都没有,但在线程里就不一样了,这样的问题我也遇见过, 内存莫明其妙地变少,呵呵,如果使用了线程就要好好检查检查了,不过一旦出现这样的问题是很难找出来的喔
      

  12.   

    同意yang_(扬帆破浪),由于sql server长时间运行以后只给operation system and other applications只留下5M内存,由于操作系统速度上不去,在起上面的应用的速度也一定快不了.
    建议:enterprise manager---right click your sql server--properties--memory---maximum的数值向下调整.
      

  13.   

    或者建立trace跟踪数据库的更新插入和查询请款
      

  14.   

    to lonwang() 
    您的建议很好,我本来就打算采用这些方法进行分析原因所在,可是对跟踪方法不太熟,只好先找找资料罗,有什么好方法可以介绍介绍
    首先,我这的情况是:
        CPU的负载没问题(75%以下)
        数据库容量没问题
        硬盘容量没问题(85%以内)
        高速缓存的命中率没问题(平均93%)
        用户连接数据没问题(远没达到最大的255)
    我还要进行监控的性能数据还有哪些,关于数据库方面的数据我不太清楚主要要看哪些,它们的数据在什么范围内正常及在什么范围内过载
      

  15.   

    checkpoint清除脏页
    dbccdb
      

  16.   

    to : weixy() 
    dbccdb是什么呀!我以前没有专门从事数据库工作的,俺是写程序的,呵呵。还请多多指教!
      

  17.   

    可能写错了,应该是
    dbcc checkdb('DBNAME')  命令
      

  18.   

    sql server2000对内存要求很高,当数据量大时,内存交换频繁,建议你在SERVER上不要有太多的服务入DNS,DHCP等等,同时保证足够大的内存空间,象你1。2G的内存,应该不要再设置虚存,设置虚寸为0,同时检查你的SQL SERVER的性能配置选项以满足你的应用要求。
      

  19.   

    to : OpenVMS(半知半解) 
    为什么不要设虚存呀!不明白
    对于性能配置选项你认为要怎么样设置才好呢?我看不出设置有什么问题。应该在设置中注意什么问题?
      

  20.   

    哈哈,让我告诉你吧,我刚好也碰到这个问题:
    是你的LOCKS太少了,重启还没多少用户用时当然快啦!你把LOCKS改大再重启服务,搞定了要谢谢我呀,这可是我碰得头破血流得到的经验。
      

  21.   

    to zqllyh(找感觉)
    谢谢你的建议,我试试去,如果真如你所说的,那可要好好谢谢你啦!
      

  22.   

    to  oldman0516(凡人0516) 
    不会,数据库可是在几天的运行过程中性能缓慢下降
      

  23.   

    to  dreamyyuan(dreamyyuan) 
    在我这,存贮过程并不多游标的使用就更少了,且都是些定时作业,最频繁的作业也只是十分钟才运行一次,大部分一天只要运行一次,而在其它的程序运行中每秒钟就要对数据库进行大概二十次左右的操作(查、增、改,删等)。都是不间断运行,应该是这些频繁的操作导致的,可就是找不出什么原因
      

  24.   

    to  qywjg(猎人) 
    如果是操作系统的问题,那别人是怎么解决的?要真的是这样,恐怕就没人用了!应该有解决的办法的,好多数据量比我这大得多的数据库都运行得很好啊!
    加内存绝对不是解决问题的根本办法,虽然能在一定程度下得到改善,目前的内存足够正常使用,只是不知道原因所在to zqllyh(找感觉) 
    您所说的LOCKS太少,我查了资料发现从SQL SERVER 7以后LOCKS的数量是由数据库动态分配的,从5000到一个非常非常大的数(上亿了吧),所以我认为应该不是这个问题,想听听您的看法与见解
      

  25.   

    其实你应该指明读操作还是写操作,从表面上看来是操作系统问题,其实我认为是你的索引设置不当有关,最好选择簇索引,这样大概会加快10倍。我的数据库有个表有1000万条纪录,至强PIII700,SQL2000大概0.1秒就可以查到,大概是未加时的10分之一。
      

  26.   

    to  hillniu(晓峰) 
    呵呵,我前面说过的啦,读、写、改、删都有, 主要是应用程序对数据库的操作,存贮过程运用较少(用于定时处理主要是写、删操作)。数据表字段较多,一般都有十几个到二十几个(会不会太多了),本人认为该建索引的地方都已建了(几乎所有与条件相关的建了索引)。我这有一个特点就是应用程序几乎二十四小时不停地对数据库进行操作(晚上二点到早上八九点时较闲,也有每秒钟建立数次数据库操作连接),数据量并不大,因为每天都进行了备份,将要进行频繁操作的表记录进行清理。
      

  27.   

    Try setting your MAX Memory config in SQL Server to some amount less than
    the max and see if that helps.  That will always leave some ram for the OS
    and other processes.一个MPV告诉我的我认为确实有道理,你检查一下SQLSERVER的WORKING SET 有多大。
    还有,SQLSERVER的句炳数是不是一直在增加。
      

  28.   

    兄弟,1。2G内存再大也搁不住一个劲地使用啊!建议控制内存池的大小。真羡慕你,我的64M内存还在跑SQL server 2000呢!仔细查看一下吧