oracle 行級鎖

 

oracle 在insert update delete ,使用select 。。for update 會自動加上行級鎖(tx),單獨的使用select 是不會加鎖的

例句 select * from table for update 【of column】【nowait|wait 3】;

 

使用for update時會對當前查詢結果鎖定,當有兩個事務a,b,同一個表的兩條數據X,Y,a事務使用行級鎖查詢了數據X,b事務直接select是不受鎖的影響的,但當b事務也涉及到鎖操作時,對應的操作會阻塞,如果給for update 語句後加上wait 約束,b事務在阻塞指定時間後會返回資源已經被佔用的錯誤,

 

User:

id 

name

sex

 

注意事項:tx鎖在事務開始啓用,在事務提交後解鎖,所以如果是在大併發條件下的使用,應該最大程度的降低事務的時長,保證開始結束,以及約束涉及的相關的數據範圍,設計上所有共享數據應該不用或儘量少用for update

發佈了41 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章