事務處理的四大特性詳解

2021-08-07 09:16:21 字數 1467 閱讀 9355

**:

首先事務是訪問並可能更新資料庫中各種資料項的乙個程式執行單元,也就是所謂的原子性他是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的一部分。

事務(transaction)所應該具有的四個特性:原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability).這是可靠資料庫所應具備的幾個特性.下面針對這幾個特性進行逐個講解.

1、原子性

原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼成功要麼失敗。

舉個簡單的例子:

a給b轉賬,a錢少了b錢多了,成功,事務提交成功,失敗回滾

--開啟事務,這是推薦的操作

start

transaction

update account set money= money - 100

where name='a';

update account set money= money +100

where name='b';

if error then

rollback

else

commit

2、一致性一致性是指在事務開始之前和事務結束以後,資料庫的完整性約束沒有被破壞。這是說資料庫事務不能破壞關係資料的完整性以及業務邏輯上的一致性。

1.案例

對銀行轉帳事務,不管事務成功還是失敗,應該保證事務結束後account表中aaa和bbb的存款總額為2000元。

保障事務的一致性,可以從以下兩個層面入手

a、資料庫機制層面

資料庫層面的一致性是,在乙個事務執行之前和之後,資料會符合你設定的約束(唯一約束,外來鍵約束,check約束等)和觸發器設定。這一點是由sql server進行保證的。比如轉賬,則可以使用check約束兩個賬戶之和等於2000來達到一致性目的

b、業務層面

對於業務層面來說,一致性是保持業務的一致性。這個業務一致性需要由開發人員進行保證。當然,很多業務方面的一致性,也可以通過轉移到資料庫機制層面進行保證。

3、隔離性

多個事務併發訪問時,事務之間是隔離的,乙個事務不應該影響其它事務執行效果。

這指的是在併發環境中,當不同的事務同時操縱相同的資料時,每個事務都有各自的完整資料空間。由併發事務所做的修改必須與任何其他併發事務所做的修改隔離。事務檢視資料更新時,資料所處的狀態要麼是另一事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會檢視到中間狀態的資料。

4、永續性

事務一旦提交成功,收據儲存將是永存的

四 Redis事務處理

redis目前對事務的支援還是比較簡單,redis能保證乙個client發起的事務中的命令可以連續執行,而中間不會插入其他client的命令 當乙個client在連線中發起乙個multi命令的時候,這個連線會進入事務上下文,而連線後續的命令不會立即執行,而是先放到乙個佇列中,當執行exec命令的時候...

Mysql事務處理詳解

一 mysql事務概念 mysql 事務主要用於處理操作量大,複雜度高的資料。由一步或幾步資料庫操作序列組成邏輯執行單元,這系列操作要麼全部執行,要麼全部放棄執行。在 mysql 中只有使用了 innodb 資料庫引擎的資料庫或表才支援事務。事務用來管理 insert,update,delete 語...

事務四大特性

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