本帖最后由 benlee 于 2011-11-15 14:03:32 编辑

解决方案 »

  1.   

    或许是因为死锁.
    读操作时采用WITH NOLOCK或许会好一些.
      

  2.   

    1、数据量有无虚报?按你的描述,你T2,T3每日2500万到6000万,t4每日4000万到9000万,T1更新次数也是每日几千万,两个服务器不分表能正常收集数据就已经很不错了。2、等第一个问题搞清楚再说吧
      

  3.   

    打开sql 监视器 监听一下看看是那里出问题。
      

  4.   

    可參照
    阻塞分析 
    http://blog.csdn.net/roy_88/article/details/2682044
    死锁分析 
    http://blog.csdn.net/roy_88/article/details/2686724
      

  5.   


    这位高手,情况是这样的
    GPS是30秒一条定位数据,同时还需要附带同频率的其它业务指令。目前跑到2000多台就有这问题了,也就是说每秒已经达到近100次更新和插入了。其它公司的产品,说是已经测试通过每组能跑2万台,我们整个系统设计也是一组服务器要跑到至少1万台的。目前还没到,不过已经出现这样的问题了。另外,T1是一台服务器,T2上装了6个硬盘做的RAID 5。按目前情况下去,后面可能支持不住了,所以来请教一下高手。
      

  6.   

    alter database 数据库 set read_committed_snapshot on --这样用已提交快照用這選項設置了就可實現oracle的永不並發功能
    快照\已提交快照
      

  7.   


    还有一个我可能没说清楚,是出现一次或是多次超时后,接收服务并不会在过一段时间后恢复插入和更新,会一直超时下去。直到你手动去停止程序和重启SQL
      

  8.   

    这可能是小问题,接收服务程序有bug或者服务器设置的某些参数不合理引起的。
      

  9.   


    这位高手
    我现在的插入是用的自己写的一个类,自动在低速时(就是上线车少时),直接执行SQL,当高速(就是在线车比较多时),把插入合并成50条再执行一次,放到25个线程中,其实刚才说的25个线程是因为在T2上有对应的5个数据库,每个库我开了5个线程,一共是25个线程。就是因为偶尔出现了一次卡死后,整个都停下来了,无法写程序自动检测。只能手动进行,所以来请教是不是有高效的解决办法。另外想知道是不是真的是由于读造成的。
      

  10.   


    还有,请教一下。
    因为如果真是读造成的,增加2台服务器问题到不是很大。只是我不太清楚,在实时同步时,两台服务器上的数据是不是真的每秒都一样的,还是有多久时间的差异。其实差30秒之间到是问题不大的,可以接受的。另外,如果同步,因为我数据量比较大,不知道对网速有没有影响。因为网络还需要用来接收 终端的TCP数据。
      

  11.   

    TO haiwer 正如你说的一样,写入数据多,读出是偶尔性的,除了当前状态表是经常性的读,其它数据都是偶尔性的,不过一次数据就比较大。另外,我确实没有做过这方面数据量的项目。这是每一次做,虽然之前已经反复思考,设计成分库分表了,但依然感觉还是欠缺,所以想请教一下这方面的经验
      

  12.   

    超时错误(time out)是因为等待时间超过了设定的值,1.延长超时的时间限制,在ADO.net控件属性及sql端的lock_timeout里改.2.等待是因为有阻塞(block),出现问题时迅速找到阻塞的源头进程.
      紧急处理方法是kill掉进程号,后面再仔细分析/优化该进程执行的内容.另需注意一个问题,例如a阻塞了b,b阻塞了c,d,e,f...,此时a才是源头,别错杀了b进程.
      

  13.   

    从问题出现到重启服务,至少有点时间记录点蛛丝马迹的.DBA就是要有这种快速诊断的能力.
      

  14.   


    关键我不是DBA,是个出血者。
      

  15.   

    sql 监视器 怎么使用,怎么打开,在那打开,有劳了
      

  16.   

    1. 针对无人监控的问题,设置一个监控服务器的程序,每隔几分钟检查一下有无死锁,有的话就kill之
    2. 服务器用raid 5 ,是否可以考虑raid 10,用空间换速度? 毕竟现在硬盘便宜了。
      

  17.   

    仅是写数据量大的话建议用BCP
      

  18.   

    写到txt文件,再定时bcp到sqlserver中。