天天看點

atitit 提升資料庫死鎖處理總結

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....