• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試開發技術SQL Server死鎖產生原因及解決辦法

    發布: 2009-10-10 10:04 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 32次 | 進入軟件測試論壇討論

    領測軟件測試網 軟件測試開發技術SQL Server死鎖產生原因及解決辦法  SQL Server數據庫

    關鍵字:死鎖      其實所有的死鎖最深層的原因就是一個:資源競爭

      表現一:

      一個用戶A 訪問表A(鎖住了表A),然后又訪問表B,另一個用戶B 訪問表B(鎖住了表B),然后企圖訪問表A,這時用戶A由于用戶B已經鎖住表B,它必須等待用戶B釋放表B,才能繼續,好了他老人家就只好老老實實在這等了,同樣用戶B要等用戶A釋放表A才能繼續這就死鎖了。

      解決方法:

      這種死鎖是由于你的程序的BUG產生的,除了調整你的程序的邏輯別無他法

      仔細分析你程序的邏輯:

      1:盡量避免同時鎖定兩個資源

      2: 必須同時鎖定兩個資源時,要保證在任何時刻都應該按照相同的順序來鎖定資源.

      表現二:

      用戶A讀一條紀錄,然后修改該條紀錄。這是用戶B修改該條紀錄,這里用戶A的事務里鎖的性質由共享鎖企圖上升到獨占鎖(for update),而用戶B里的獨占鎖由于A有共享鎖存在所以必須等A釋放掉共享鎖,而A由于B的獨占鎖而無法上升的獨占鎖也就不可能釋放共享鎖,于是出現了死鎖。

      這種死鎖比較隱蔽,但其實在稍大點的項目中經常發生。

      解決方法:

      讓用戶A的事務(即先讀后寫類型的操作),在select 時就是用Update lock

      語法如下:

    select * from table1 with(updlock) where ....

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>