Hibernate之事務併發處理

事務併發處理

一、 數據庫的隔離級別:併發性作用。

1、   ReadUncommited(未提交讀):沒有提交就可以讀取到數據(發出了Insert,但沒有commit就可以讀取到。)很少用

2、   ReadCommited(提交讀):只有提交後纔可以讀,常用,

3、   RepeatableRead(可重複讀):mysql默認級別, 必需提交才能見到,讀取數據時數據被鎖住。

4、   Serialiazble(序列化讀):最高隔離級別,串型的,你操作完了,我纔可以操作,併發性特別不好,

隔離級別

是否存在髒讀

是否存在不可重複讀

是否存在幻讀

Read Uncommitted(未提交讀)

Y

Y

Y

Read Commited(提交讀)

N

Y(可採用悲觀鎖解決)

Y

Repeatable Read(可重複讀)

N

N

Y

Serialiazble(序列化讀)

 

 

 








髒讀:沒有提交就可以讀取到數據稱爲髒讀

不可重複讀:再重複讀一次,數據與你上的不一樣。稱不可重複讀。

幻讀:在查詢某一條件的數據,開始查詢的後,別人又加入或刪除些數據,再讀取時與原來的數據不一樣了。

1、   Mysql查看數據庫隔離級別:

方法:select@@tx_isolation;


2、   Mysql數據庫修改隔離級別:

方法:set transactionisolation level 隔離級別名稱;


例如:修改爲未提交讀:settransaction isolation level read uncommitted;


二、 事務概念(ACID)

ACID即:事務的原子性、一致性、獨立性及持久性 
事務的原子性:是指一個事務要麼全部執行,要麼不執行.也就是說一個事務不可能只執行了一半就停止了.比如你從取款機取錢,這個事務可以分成兩個步驟:1劃卡,2出錢.不可能劃了卡,而錢卻沒出來.這兩步必須同時完成.要麼就不完成.
事務的一致性:是指事務的運行並不改變數據庫中數據的一致性.例如,完整性約束了a+b=10,一個事務改變了a,那麼b也應該隨之改變.
事務的獨立性:是指兩個以上的事務不會出現交錯執行的狀態.因爲這樣可能會導致數據不一致. 
事務的持久性:是指事務運行成功以後,就係統的更新是永久的.不會無緣無故的回滾.

三、 事務併發時可能出現問題

1、第一類丟失更新(Lost Update)

時間

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章