需求:
由于某些查询消耗的服务器资源很大,严重影响到了各个客户端的请求。
例如:
某个客户端的一个请求(SQL语句查询)提交到中间层,中间层执行时SQLServer自身占用了服务器的大量资源,导致其它应用以及请求执行明显减慢,响应时间过长。
这种情况如何解决?
必须保证:
客户端提交这样的请求,即对某个单表(数据量>1000w)进行较复杂的SQL查询的功能必须提供,但是需要保证其它客户端的请求响应时间正常!——nnd晕了
或者在某个客户端尽进行耗资源操作时,可以提供“取消”功能,即客户端可以取消当前请求,当然不能影响其它正常操作!急呀~~~~~~~~~~~~~~~~~~~~~~~~
在线等~~~~~~~~~~~~~~~~~~~~~~
分不够还可以另开贴~~~~~~~~~~
http://community.csdn.net/Expert/topic/4327/4327975.xml?temp=.951687

解决方案 »

  1.   

    我做的系统目前的版本中有一些功能是提供个用户可以对任意数据表进行“自由”的查询操作,而且对象数据结构不是已知的也是“任意”的
    主要就是在这个上面郁闷呀~所以想来想去,优化SQL,优化数据库配置,提供增删字段索引...若干功能后,发现还需要提供客户端查询请求的“取消”功能,但是需要准确的取消当前请求,不能影响当前客户端的其它操作更不能影响其它客户端!就这个问题也问过微软的技术支持,直到可以通过SQLServer中的spid来处理,但是由于我使用的开发工具是Delphi,在使用ClientDataSet分包取数时会产生多个?spid?而这个spid在SQLServer的查询分析器中还看不到!?——郁闷~
    ClientDataSet做了什么?
    spid指的到底是什么?
    怎么利用这个来“取消”请求?有没有人用过?
    急~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      

  2.   

    spid的准确意思是什么?用来干什么的?因为怎么产生的?
      

  3.   

    其实可以有存储过程来解决这问题,假如你是用SQL或ORACLE做为数据库,你可以先建立存储过程,这样使系统用起来就比较快了.我赞成使用这方法。
      

  4.   

    CloneCenter(复制中心) 
      可以的话,提供详细一点的方案或者做法,我也想知道
      

  5.   

    1.你可以先在存储过程中执行查询,然后返回游标
    2.数据查询数据操作部分用两个不同的中间处理器。
    3.建好索引,调好查询缓冲区,SQL优化(多看分析)
    4.数据仓库 (如果不行的话)