如果你的系统内有大量的update语句,也有很多select语句。而每个update语句,只是更新少量的数据,那么建议根据where语句的字段,建立索引,这样对select的语句影响就会很小。另外,通过:select * from 表 with(nolock) 
这样select语句,就不会被阻塞了

解决方案 »

  1.   

    这种网站谢策不错http://wuzhiyuanbj.blog.163.com/blog/static/1747058702011102424221299/
      

  2.   

    http://wuzhiyuanbj.blog.163.com/blog/static/1747058702011102424221299/
      

  3.   

    版主能否详细指点下呢?我正在转向DBA
      

  4.   

    sql azure默认隔离级别是read committed isolation,已经可以满足快照隔离,但是非云方面的sql server默认还是read committed,也就是写(update、delete、insert)会阻塞读操作。直到写操作完毕之后才能读,如果使用with nolock,也就是read uncommitted的效果,那么可以在update的时候读,但是这个数据的准确性不能保证,某些情况下会报错(见过这个例子,一时间找不到),2005开始微软建议使用快照隔离,不过这个对tempdb的压力比较大,当你真要用的时候,要先看清楚快照隔离的注意事项
      

  5.   

    肯定有影响呀,1个用CPU和100个人用CPU,肯定是有区别的嘛,只是有时候延迟10 or 50毫秒,用户感觉不出来
    暂不提阻塞
      

  6.   

    如果你的一个会话A正 update ,这里你开另外一个会话B,并执行该表上的 select  , 则会话B 要等到 A commit 或rollbak 才会出结果。