1 併發數據庫
多用戶數據庫管理系統的一個主要任務是對 併發(concurrency)進行控制,即對多個用戶同時訪問同一數據進行控制。當缺少有效的併發控制時,修改數據的操做就不能保證正常,從而危害數據完整性。管理數據併發的方法是讓每一個用戶輪流操做數據。而數據庫管理系統的目標就是減小每一個用戶的等待時間,即讓用戶無需等待或使等待難以察覺。服務器
爲保證數據庫性能,Oracle 應用了不一樣類型的鎖和多版本數據完整性模型(multiversion consistency model)。這些特性都包含在事務(transaction)的概念裏。應用程序開發人員應該在設計事務時充分發揮其中的併發、完整性等特性。併發
1.1 讀一致性函數
Oracle 提供的讀完整性包含如下特性:性能
事務是 Oracle 實現讀完整性的關鍵。事務是一組 SQL 語句(這組語句或者被一塊兒提交,或者都不被提交),事務的做用是:設計
*只讀事務對象
默認狀況下,Oracle 只保證語句級的讀完整性。由一個查詢返回的數據對同一時間點來講是一致的。可是在有些狀況下,用戶可能須要事務級的讀完整性。也就是要使一個事務中的多個查詢對同一時間點來講都是一致的,這樣事務中的每一個查詢都不會受到與之衝突的事務的干擾。若是用戶須要對多個表作多個查詢,建議使用只讀事務。同理,方法(函數)級的事務控制策略至少應該支持只讀事務。事務
2 各類鎖機制開發
Oracle 也使用 鎖(lock)來控制對數據的併發訪問。當更新數據時,數據庫服務器鎖定被修改的數據直到此更新被提交。在這期間,任何用戶都不能修改被鎖定的數據。這保證了系統的數據完整性。io
Oracle 鎖定數據的操做無需用戶干預,可以自動執行。當一個 SQL 執行時,Oracle 根據實際狀況的須要,隱式地對數據加鎖。Oracle 的鎖管理器自動地在行級對錶數據加鎖,所以對相同的數據競爭能夠最小化。
2.1 共享鎖(S鎖)
若事務T對數據對象A加上S鎖,則事務T能夠讀A但不能修改A,其餘事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。
2.2 排他鎖(X鎖)
若事務T對數據對象A加上X鎖,事務T能夠讀A也能夠修改A,其餘事務不能再對A加任何鎖,直到T釋放A上的鎖。
2.3 有關共享鎖和排他鎖的解釋
鎖機制的基本操做是事務T在操做數據對象A時,其餘事務不能繼續對A操做,直到T完成。若容許其餘事務對數據A可讀屬於共享鎖,不可讀屬於排他鎖。
擴展閱讀:
1.事務隔離級別
2.Spring事務傳播機制