數據併發會引發不少問題,數據庫經過鎖機制來解決併發訪問的問題,雖然不一樣的數據庫在實現細節上存在差異,可是原理都差很少,下面介紹一下數據庫的鎖機制數據庫
按鎖定的對象不一樣分爲表鎖定和行鎖定,表鎖定對整個表進行鎖定,行鎖定針對特定的行進行鎖定,從併發事務鎖定的關係上看,能夠分爲共享鎖定和獨佔鎖定,共享鎖定會防止獨佔鎖定,容許其餘的共享鎖定,而獨佔鎖定既防止其餘的獨佔鎖定,也防止其餘的共享鎖定。下面介紹一下oracle的五種鎖定:併發
1 行共享鎖定:通常經過select for update 語句隱式得到行共享鎖定,在oracle中用戶能夠經過lock table in row share mode 語句顯示得到行共享鎖定。行共享鎖定並不防止對數據進行更改操做,可是防止其餘會話獲取獨佔性數據表鎖定。oracle
2 行獨佔鎖定:經過一條insert,update,delete語句隱式獲取,或者經過一條lock table in row exclusive mode 語句顯示獲取。這個鎖定能夠防止其餘會話獲取一個共享鎖定,共享行獨佔鎖定或者獨佔鎖定。對象
3 表共享鎖定:經過一條lock table in share mode 語句顯示得到,這種鎖定能夠防止其餘會話獲取行獨佔鎖定(insert,update,delete),或者防止其餘錶行獨佔鎖定或者表獨佔鎖定,他容許在表中擁有多個行共享和表共享鎖定事務
4 表共享行獨佔:經過lock table in share row exclusive mode 語句顯示得到,這種鎖定能夠防止其餘會話獲取一個表共享鎖定,只是一次只能對一個表放置表共享行獨佔鎖定table
5 表獨佔:經過lock table in exclusive mode顯示得到,這個蘇定防止其餘會話對該表的任何其餘鎖定原理