Oracle如何保證併發操作?

2021-07-28 11:06:45 字數 636 閱讀 1845

oracle

採用封鎖技術保證併發操作的可序列性

oracle

的鎖分為兩大類:資料鎖(亦稱dml鎖)和字典鎖。

字典鎖是oracle dbms內部用於對字典表的封鎖。字典鎖包括語法分析鎖和ddl鎖,由dbms在必要的時候自動加鎖和釋放鎖,使用者無權控制。

oracle

主要提供了五種資料鎖:

共享鎖(s鎖)、排他鎖(x鎖)、行級共享鎖(rs鎖)、行級排他鎖(rx鎖)和共享行級排他鎖(srx鎖)。

其封鎖粒度包括行級和表級。資料鎖的相容矩陣如圖所示。

oracle

資料鎖的相容矩陣

在通常情況下,資料封鎖由資料庫系統控制,對使用者透明。但oracle也允許使用者用lock table語句顯式對封鎖物件加鎖。

oracle

資料鎖的乙個顯著特點是,在預設情況下,讀資料不加鎖。也就是說,當乙個使用者更新資料時,另乙個使用者可以同時讀取相應資料,反之亦然。oracle通過回滾段(rollback segment)的記憶體結構來保證使用者不讀「髒」資料和可重複讀。這樣做的好處是提高了資料的併發度。

oracle

提供了有效的死鎖檢測機制,週期性診斷系統中有無死鎖,若存在死鎖,則撤消執行更新操作次數最少的事務。

如何保證redis高併發及高可用

1 面試題 如何保證redis的高併發和高可用?redis的主從複製原理能介紹一下麼?redis的哨兵原理能介紹一下麼?2 考點分析 其實問這個問題,主要是考考你,redis單機能承載多高併發?如果單機扛不住如何擴容抗更多的併發?redis會不會掛?既然redis會掛那怎麼保證redis是高可用的?...

併發安全(一) 如何保證執行緒安全

我們在併發程式設計中,首先不可避免的就是如何保證在併發中的執行緒安全問題。我們之前說過太多的併發工具類 併發容器等。這裡我們就分析我們在併發程式設計中,看看在哪些方面才能保證我們的執行緒安全。首先我們在併發中,一般都是對於共享資源等進行操作,可能會有執行緒安全的問題,那我們我們就不使用共享資源,是不...

如何保證Redis的高併發和高可用?

就是如果你用redis快取技術的話,肯定要考慮如何用redis來加多台機器,保證redis是高併發的,還有就是如何讓redis保證自己不是掛掉以後就直接死掉了,redis高可用 redis高併發 主從架構,一主多從,一般來說,很多專案其實就足夠了,單主用來寫入資料,單機幾萬qps,多從用來查詢資料,...