資料庫技術:事務的特性(ACID)和隔離級別的介紹

事務的特性(ACID)和隔離級別

原子性(Atomicity)原子性是指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。一致性(Consistency)一個事務中,事務前後數據的完整性必須保持一致。隔離性(Isolation)多個事務,事務的隔離性是指多個用戶併發訪問數據庫時,一個用戶的事務不能被
其它用戶的事務所幹擾,多個併發事務之間數據要相互隔離。持久性(Durability)持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,接下來即使數據庫發生故障也不應該對其有任何影響。

併發訪問問題,是由隔離性引起,如果不考慮隔離性,事務存在3種併發訪問問題。併發訪問就是多個事務訪問同一個數據庫

1)髒讀:B事務讀取到了A事務尚未提交的數據 ------ 要求B事務要讀取A事 務提交的數據2)不可重複讀:一個事務中 兩次讀取的數據的內容不一致 ----- 要求的是一個事務中多次讀取時數據是一致的 --- unpdate3)幻讀/虛讀:一個事務中兩次讀取的數據的數量不一致 ----- 要求在一個事務多次讀取的數據的數量是一致的 --insert delete(併發訪問數據庫,一個事務1查詢結果為1,另一個事務修改了數據庫,事務1再次查找結果就變成2了,這是不允許的)

事務的隔離級別

1)read uncommitted : 讀取尚未提交的數據 :哪個問題都不能解決2)read committed:讀取已經提交的數據 :可以解決髒讀 ---- oracle默認的3)repeatable read:重讀讀取:可以解決髒讀 和 不可重複讀 ---mysql默認的4)serializable:串行化:可以解決 髒讀 不可重複讀 和 虛讀---相當於鎖表查看mysql數據庫默認的隔離級別:select @@tx_isolation設置mysql的隔離級別:set session transaction isolation level 設置事務隔離級別

隔離級別的性能:

read uncommitted>read committed>repeatable read>serialazable

安全性:

read uncommitted


分享到:


相關文章: