中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫鎖機制是怎樣的

發布時間:2021-12-01 18:33:51 來源:億速云 閱讀:155 作者:柒染 欄目:大數據

數據庫鎖機制是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

數據庫在并發時會出現很多問題,但有些時候會提高程序的運行效率,而有些時候則會產生非常嚴重的BUG。數據庫為了解決因并發而產生的問題,于是底層采用數據庫鎖的的機制來解決并發問題,也就是類似Java中的同步鎖。雖然不同數據庫的鎖機制在底層可能是不同的,但是它們的實現原理都是一樣的。下面我們看一下數據庫鎖機制的底層實現原理。

鎖的分類

按照鎖定的對象不同可以分為表鎖定和行鎖定。它們的區別是前者是對整個表鎖定,而后者是對表中的特定行進行鎖定。從并發事物鎖定的關系上來分,可以分為共享鎖定和獨占鎖定。它們的區別是共享鎖定會防止獨占鎖定,但允許其它的共享鎖定。而獨占鎖定既防止其它的獨占鎖定又防止其它的共享鎖定。

應用場景

按照上面介紹的鎖的分類如果我們要對數據庫進行數據更改時也就是UPDATE,那么數據庫必須在進行更改的行上添加獨占鎖定,只有這樣才能保證數據庫的數據安全。除此之外還有INSERT、DELETE等操作都會隱式的添加行鎖定。下面我們已Oracle數據庫為例子,來重點介紹一下數據庫的鎖定。

Oracle鎖

  • 行共享鎖:可以通過SELECT FOR UPDATE語句隱式的獲得行共享鎖。在Oracle中也可以通過LOCK TABLE IN ROW SHARE MQDE 語句顯式的獲得行共享鎖。行共享鎖的特性是:它并不防止對數據行進行更改操作,但是它可以防止其它操作獲取獨占鎖。行共享鎖還允許進行多個并發的行共享和行獨占性鎖,并允許進行數據表的共享或采用共享行獨占鎖定。

  • 行獨占鎖:可以通過INSERT、UPDATE和DELETE語句隱式的獲取行獨占鎖,當然也可以直接通過LOCK TABLE IN ROW EXCLUSIVE MODE語句顯式的獲取行獨占鎖。行獨占鎖的特性是:它可以防止其它操作獲取一個共享鎖、共享獨占鎖或獨占鎖。

  • 表共享鎖:可以通過LOCK TABLE IN SHARE MODE顯示獲得。表共享鎖的個特性是:它可以防止其它操作獲取行獨占鎖或者防止其它表共享行獨占鎖或表獨占鎖,它允許在表中擁有多個行共享和表共享鎖。該鎖可以讓會話具有對表事務級一致性訪問,因為其它會話在用戶提交或者回滾該事務并釋放該表的鎖之前不能更改這個被鎖定的表。

  • 表共享行獨占:可以通過LOCK TABLE IN SHARE ROW EXCLUSIVE MODE語句獲得。表共享行獨占的特性是:它可以防止其它會話獲取一個表共享、行獨占或者表獨占鎖,它允許其它行共享鎖。這種鎖類似表共享鎖,只是它一次只能對一個表放置一個表共享行獨占鎖定。例如:如果A會話擁有該鎖,則B會話可以執行SELECT FOR UPDATE 操作,但如果B會話試圖更新選擇的行時,則需要等待。

  • 表獨占:可以通過LOCK TABLE IN EXCLUSIVE MODE 顯示獲得。表獨占的特性是:它可以防止其它會話對該表的任何其它鎖定。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武隆县| 内丘县| 基隆市| 仙桃市| 什邡市| 普定县| 开江县| 栾城县| 外汇| 石屏县| 滦南县| 专栏| 太白县| 长垣县| 密山市| 和硕县| 方城县| 偏关县| 凤凰县| 鄂尔多斯市| 陵川县| 福鼎市| 微博| 榆树市| 弥渡县| 调兵山市| 册亨县| 泊头市| 大田县| 祥云县| 康定县| 德令哈市| 体育| 英超| 曲阳县| 军事| 台北市| 城步| 秦安县| 永仁县| 仪陇县|