atitit 提升資料庫死鎖處理總結
正常的來說,鎖上都是自動的..不用官..
正常來講,insert時不需要加rowlock,就預設是rowlock了,
#-----鎖的自動轉換原理.(正常的不用理它,除外alter 表格字段)
當事務超出其更新門檻值時,資料庫也許 會自動将行鎖和頁鎖更新為表鎖。
例如,在行上執行表事務時,資料庫會自動在受影響的行上擷取鎖,同時将更進階别的意向鎖置于包含這些行的頁和表上。所有相關的索引頁也将同時鎖定。當事務所持有的鎖的數量超出其門檻值時,就會嘗試将表上的意向鎖更改為更強的鎖。例如,意向排他 (IX) 鎖可以更改為排他 (X) 鎖。得到更強的鎖後,事務在表上所持有的所有頁級及行級鎖都将予以釋放。
作者 老哇的爪子 Attilax 艾龍, EMAIL:[email protected]
轉載請注明來源: http://blog.csdn.net/attilax
#-------事務和死鎖
事務拉長了處理流程,會增添死鎖的機會..
不是說不能使用事務,,,應該使用事務的還是應該使用事務...同時使用sync解決死鎖.
#------解決死鎖
預設狀态哈,僅僅在為同樣的一個記錄修改的時候兒,才也許死鎖...
和file雅十, 加個同步sync 在内代碼走ok蘭
不重要性的項目,直接only update操作sync走ok...
#------解決死鎖(補充法)
代碼洩漏在所難免,,必須兩手抓...
用戶端,自動關閉timeout conn ,好像對timeout 事務不生效..隻好自己寫gc outtime...
伺服器,設定 conn timeout,,而且lock timeout...
看門狗必須的..查詢lock 或者過長時間sql ,kill....