1. 程式人生 > >資料庫鎖機制1------共享鎖

資料庫鎖機制1------共享鎖

一、共享鎖

什麼是共享鎖:簡單來說就是該鎖鎖定的資源只能進行讀取,不能進行增刪改操作,直到該鎖釋放。

example 1:

請求1:select * from  tabletest

請求2:update tabletast set ....

資料庫執行請求1的sql語句,是select語句,資料庫會給該表加上共享鎖,查詢的資料保持一致,這時如果請求1還沒釋放共享鎖,資料庫執行請求2的sql語句,是update語句,資料庫會給該表加上排它鎖,但是同一資源共享鎖和排他鎖是不能共存的,所以請求2 只能等請求1執行完釋放共享鎖,這時請求2的update才能進行。

example 2:

請求1:select * from  tabletest

請求2:select * from  tabletest

資料庫執行請求1的sql語句,是select語句,資料庫會給該表加上共享鎖,資料庫執行請求2的sql語句,資料庫也會給該表加上共享鎖,這時請求1 不會阻塞請求2,因為同一個資源共享鎖是可以疊加的,共享鎖與共享鎖相容。

example 3:

請求1:select * from  tabletest

請求2:select * from  tabletest

請求3:update tabletast set ....

資料庫執行請求1的sql語句,是select語句,資料庫會給該表加上共享鎖,資料庫執行請求2的sql語句,資料庫也會給該表加上共享鎖,請求3的update語句,只有等請求1,請求2的共享鎖都釋放掉,請求3的sql語句才會執行。