天极Yesky
  • 笔记本电脑
    笔记本
  • 台式电脑
    台式机
  • 手机
    手机
  • 电脑硬件DIY
    DIY硬件
  • CPU
    主板
    音箱
  • 硬盘
    显卡
    键鼠
  • 内存光驱
    显示器
    机箱电源

  • 数码相机DC
    数码相机
  • MP3播放器
    MP3/MP4
  • 数码摄像机DV
    摄像机
  • 电脑外设
    外设
  • 网络
    网络
  • 服务器
    服务器
  • 数字家庭
    数字家庭
  • 群乐
    群乐
  • 产品报价 行情 经销商 渠道 评测 | 软件 设计 网页 开发 安全 论坛 E时代 游戏 图片 壁纸 下载 网摘 博客 索尼专区 Vista 科技奥运
    天极网
    Avoid blocking
    作者: Barrie Sosinsky
    出处:
    责任编辑:
    [ 2004-06-17 18:42 ]


    Blocking is a classic database problem in which a transaction locks a first record and then a second record. If a subsequent transaction then runs and attempts to lock those same records, and performs the lock in the opposite order just after the first transaction, you have a deadlock and both transactions cannot get the resources they need to complete their transaction.

    SQL Server when run as a single server can often detect deadlocks and terminate one of the transactions. However, when a single client application is updating multiple SQL servers, then deadlock can occur because the status of locks is not communicated. Using a two-phase commit won't help you here.

    To avoid deadlocks you can design your application so that the two transactions both request their locks in the same absolute order. This will eliminate many problems, but not all, as in the instance where a transaction reads and updates a record with HOLDLOCK. HOLDLOCK prevents other transactions from updating what was read. So in this latter example, both transactions can deadlock because both can get the READLOCK, but neither can update since each is waiting for the other to release its READLOCK. While SQL Server also can detect this kind of deadlock on a single server, it cannot correct the problem when multiple servers are involved. Using the BROWSE mode or timestamps rather than HOLDLOCK can provide a solution.

    Other Microsoft Knowledge Base articles on this topic may be found at support.microsoft.com. Look for the following articles: Q162361, Q169960, and Q43199.

    笔名:
    请您注意:

     遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

     天极网拥有管理笔名和留言的一切权利。
    相关内容