oracle不同的事務transaction隔離級別isolation level進一步理解
前言
o racle資料庫事務由於併發執行的原因,會產生各種各樣的問題。oracle為了處理這些不同的問題,設計了不同的事務隔離級別:read committed(預設)及serializable
相關文章
oracle資料庫事務不同事務隔離級別與v$transaction flag列思考
測試目標
-
2種不同事務隔離級別的在併發事務訪問的差異性
測試明細
小結
-
可見serializable事務隔離級別,雖然可以實現絕對的資料一致性,但是事務併發訪問能力要差於read committed。原因見上,直接就報ora-08177:can't serializable acess for this transaction.要知道併發訪問期間,難免會產生相同的sql語句同時更新同一條表記錄或同一個表的相關記錄資源
-
read committed雖然併發訪問好於serializable,但是容易產生資料不一致性,特別是在併發事務同時更新表的相同記錄資源時,引起丟失更新。如果為了在事務期間不會導致丟失更新,update之前,一定先要select for update,如果select for update無法加鎖,如果無法加鎖,表明其它事務已經對於鎖定的表記錄資源正在更新。業務處理邏輯可以設定鎖超時或者定製程式然後異常進行特定的處理。
事務隔離級別全是針對併發事務訪問,起碼2個事務以上。
serializable事務隔離級別適用的業務場景
-
資料庫update語句更新的表記錄數很少(注:因為更新的表記錄越多,產生鎖衝突的可能越大,則事務併發就會減少)
-
併發事務同時更新表的相同記錄的可能性很小(注:如果更新相關表記錄的併發事務越多,產生鎖衝突可能越大,又會報ora-08177:can't serializable acess for this transaction,這樣就會影響事務的併發訪問)
-
長時間執行的事務,其中包含的SQL語句主要是隻讀select語句(注:select語句引起鎖衝突的可能性很小,這樣併發訪問就可以保障)
所以說serializable事務隔離級別並不適用於高併發的事務訪問環境
serializable事務隔離級別ora-08177處理方法
-
commit提交當前事務已經操作的部分操作的結果
-
rollback 回滾當前事務到一個儲存點savepoint(不至於完全白作了)
-
rollback回滾整個當前事務
當然採用上述哪種處理方法,取決於你的於業務場景。每種業務場景對於資料的一致性要求不一樣,有的是強一致性,有的是弱一致性,有的是最終一致性。大家可以根據不同的一致性需求選用合適的處理方法
培訓課件
(收費20元)
聯絡方式
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2664080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle事務隔離級別transaction isolation level初識Oracle
- oracle資料庫事務transaction隔離級別isolation level的選擇依據Oracle資料庫
- oracle資料庫事務不同事務隔離級別與v$transaction flag列思考Oracle資料庫
- 理解mysql的事務隔離級別MySql
- 理解MySQL事務隔離級別MySql
- [20200512]oracle的事務隔離級別.txtOracle
- 如何理解mysql 的事務隔離級別 repeatable readMySql
- 3分鐘搞懂MySQL事務隔離級別及SET TRANSACTION影響事務MySql
- MySQL事務的隔離級別MySql
- MySQL的事務隔離級別MySql
- MySQL事務隔離級別MySql
- 事務、特性、隔離級別
- MySQL 事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- PostgreSQL事務隔離級別SQL
- 深入理解oracle的事務隔離性Oracle
- 怎麼理解SQL的四個事務隔離級別?SQL
- 事務的四種隔離級別
- 事務系統的隔離級別
- 事務的隔離級別與MVCCMVC
- 事務四種隔離級別
- SQLSERVER 的四個事務隔離級別到底怎麼理解?SQLServer
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- oracle資料庫事務transaction 不同的鎖lock型別Oracle資料庫型別
- 資料庫事務與事務的隔離級別資料庫
- (轉)事務的四種隔離級別
- MySQL 的四種事務隔離級別MySql
- MySQL 事務的隔離級別初窺MySql
- 理解事務的4種隔離級別
- 深入理解MySQL中事務隔離級別的實現原理MySql
- MySQL事務隔離級別和MVCCMySqlMVC
- 事務ACID特性與隔離級別
- 啥是 MySQL 事務隔離級別?MySql
- mysql如何修改事務隔離級別MySql
- mysql事務隔離級別和鎖MySql
- Mysql鎖與事務隔離級別MySql
- Mysql 四種事務隔離級別MySql
- [轉帖]資料庫的快照隔離級別(Snapshot Isolation)資料庫