2018 03 05 資料庫中的事務管理

2021-08-16 03:00:33 字數 816 閱讀 2131

事務的特性:

1,原子性:不可分割

2,一致性:事務執行前後,要保證資料完整性保持一致

3,隔離性:乙個事務的執行過程中不應該受其他事務的干擾

4,永續性:事務一旦執行結束,資料要永久持久化到資料庫

如果不考慮隔離性會引發的一些問題:

讀問題:

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

不可重複讀:乙個事務讀到另乙個事務已經提交的update資料導致前後查詢不一致

虛讀:乙個事務讀到另乙個事務已經提交的insert的資料導致前後查詢不一致

如何避免讀問題:

設定事務的隔離級別:

未提交讀;

已提交讀;

可重複讀;

序列化;

寫問題:

丟失更新:另乙個事務提交或回滾的資料將乙個事務提交的資料覆蓋了。

多個事務修改同一條記錄,a事務修改記錄的年齡字段。b事務修改了記錄中工資字段。a先提交了

b事務回滾導致a事務修改的記錄被覆蓋

b事務提交導致a事務提交的記錄被覆蓋

解決丟失更新問題:

悲觀鎖:就是很悲觀,每次都認為會有人對資料庫進行了修改,所以每次在拿資料的時候,都會上鎖,這樣別人想拿這個資料的時候就會鎖住直到它拿到這個鎖才能進行操作,傳統資料庫中很多時候都用到了這種鎖機制,比如行鎖,表鎖等。

樂觀鎖:很樂觀,認為每次去拿資料的時候別人沒有進行修改,但是每次更新資料的時候都會判斷一下別人是否對資料進行了修改,樂觀鎖適用於多讀的情況,這樣可以增加吞吐量。

兩種鎖各有優點,樂觀鎖只用於寫很少的時候,這樣可以省去了鎖的開銷,如果經常發生衝突,要使用悲觀鎖。

資料庫中的事務

一.事務 transaction 定義 事務就是乙個對資料庫操作的序列,是乙個不可分割的工作單位,要不這個序列裡面的操作全部執行,要不全部不執行。特性 原子性 atomicity 永續性 durability 一致性 consistency 隔離性 isolation 下面我將用銀行轉賬來舉例說明事...

mysql資料庫中的事務

1.什麼是事務 事務中有多個操作,這些操作的執行結果要麼完全成功,要麼完全失敗,不可能出現一部分成功,一部分失敗的情況。比如說轉賬業務 張三給李四轉100w,那麼有兩個操作,乙個是張三減去100w,李四加上100w,兩個操作都成功,要麼都失敗,不能出現張三減了100w,李四沒有加上100w的情況。2...

資料庫的事務

一 mysql事務 事務 邏輯上的一組操作,組成這組操作的單元,要麼都成功,要麼都不成功。mysql事務 jdbc如何控制事務 事務的特性 重點 acid 原子性 指事務是乙個不可分割的單位,事務中的操作要麼都發生,要麼都不發生 一致性 事務必須使資料從乙個一致性狀態轉化到另乙個一致性狀態 隔離性 ...