事務 四大特性 mysql 悲觀鎖與樂觀鎖

2021-07-24 10:38:37 字數 1195 閱讀 3371

事務:

* 事務就是邏輯上的一組操作,要麼全都成功,要麼全都失敗!!!

事務特性:

* 原子性:事務一組操作不可分割.

* 一致性:事務的執行前後,資料完整性要保持一致.

* 隔離性:乙個事務在執行的過程中不應該受到其他事務的干擾.

* 永續性:一旦事務結束,資料就永久儲存資料庫.

如果不考慮事務的隔離性引發一些安全性問題:

* 5大類問題:3類讀問題2類寫問題.

* 讀問題:

* 髒讀:乙個事務讀到另乙個事務未提交資料.

* 不可重複讀:乙個事務讀到另乙個事務已經提交資料(update),導致查詢結果不一致.

* 虛讀:乙個事務讀到另乙個事務已經提交的資料(insert),導致查詢結果不一致

* 避免三種讀的問題:

* 設定事務的隔離級別:

* 未提交讀:以上三種讀問題 都有可能發生.

* 已提交讀:避免髒讀,但是不可重複讀和虛讀有可能發生.

* 重複讀:避免髒讀和不可重複讀,但是虛讀是有可能發生.

* 序列的:可以避免以上三種讀問題.

* 在hibernate中設定事務的隔離級別:

* 在核心配置檔案中:

4悲觀鎖     假設丟失更新一定會發生    利用資料庫內部鎖機制,管理事務

mysql資料庫內部提供兩種常用的鎖機制  共享鎖(讀鎖)和排它鎖(寫鎖)  鎖必須在事務中新增,事務結束了鎖就釋放了

允許一張資料表中資料記錄新增多個共享鎖,新增共享鎖記錄,對於其他事務可讀不可寫

可新增乙個排他鎖,防止其他事務修改

mysql新增 共享鎖方式   select * from  account lock  in share mode;

mysql新增 排他鎖方式   select * from  account  for  update;

解決丟失更新的方法:事務在修改記錄過程中,鎖定記錄,別的事務無法併發修改

樂觀鎖    採用記錄的版本字段,來判斷記錄是否修改過

timestamp   可以自動更新

create table  product(

id int,

name varchar(20),

updatetime timestamp

解決丟失更新的方法:在資料表中新增版本字段,每次修改過記錄後,版本欄位都會更新,如果讀取的版本欄位與修改時不一致,證明被修改過

事務四大特性

1 原子性 將事務中所做的操作 成乙個原子單元,即對於事務所進行的資料修改等操作,要麼全部執行,要麼全部不執行。2 一致性 事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。事務在完成時,必須使所有的資料都保持一致狀態,而且在相關資料中,所有規則都必須應用於事務的修改,以保持所有資料...

事務四大特性

資料庫事務有四大特性,分別是 原子性 一致性 隔離性和永續性。原子性 atomicity 事務是資料庫的邏輯工作單位,它對資料庫的修改要麼全部執行,要麼全部不執行。一致性 consistemcy 事務前後,資料庫的狀態都滿足所有的完整性約束。隔離性 isolation 併發執行的事務是隔離的,乙個不...

事務四大特性

事務四大特性 acid 1 原子性 atomicity 化學中的原子指不可再分的基本微粒,資料庫中原子性強調事務是乙個不可分割的整體,事務開始後所有操作要麼全部成功,要麼全部失敗,不可能停滯在中間某個環節。如果事務執行過程 錯就會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣不會對資料庫有任何影...