事务(进程 ID 109)与另一个进程被死锁在 锁 _ 通信缓冲区 资源上,并且已被选作死锁牺牲品。请重新运行该事务.查了后是以下语句出现了问题。
update ArticleTable set Hit=Hit+1 where ArticleId=201请问怎么解决呀?
帮忙呀!

解决方案 »

  1.   

    谢谢!
    ArticleId 是 主键
      

  2.   

    这张表是不是经常被查询,如果是经常被当作报表查询的话 可以试试降低隔离级别比如
    SELECT * FROM ArticleTable With(NOLOCK) Where....
    或者
    SELECT * FROM A With(NOLOCK)
    INNER JOIN ArticleTable With(NOLOCK) ON....
      

  3.   


    楼主首先看看是不是自己出现了
    begin tran
    select * from table1 ……
    update table1 set ……
    end tran这样类型的事务,如果是可以有如下几种办法:
    1 按照3楼兄弟的做法强制select 不加锁
    2 如果是2005则可以考虑使用行版本控制,不过也需要注意采用行版本的代价
    3 更改业务逻辑,将select 和update 语句分开单独执行,不要放到事务中如果不是刚刚那种类型的事务则注意这个表是不是有触发器往里更新数据等等导致和其它语句发生死锁。
    希望楼主能尽快解决,并将解决办法贴出来:)