資料庫事務ACID

2021-07-16 08:08:49 字數 1172 閱讀 3590

1.原子性(atomicity)

原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

2. 一致性(consistency)

事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。

3. 隔離性(isolation)

事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。

4. 永續性(durability)

永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來的其他操作和資料庫故障不應該對其有任何影響。

事務的隔離性分為四個隔離級別:

未授權讀取(read uncommitted):允許髒讀取,但不允許更新丟失。如果乙個事務已經開始寫資料,則另外乙個資料則不允許同時進行寫操作,但允許其他事務讀此行資料。該隔離級別可以通過「排他寫鎖」實現。

授權讀取(read committed):允許不可重複讀取,但不允許髒讀取。這可以通過「瞬間共享讀鎖」和「排他寫鎖」實現。讀取資料的事務允許其他事務繼續訪問該行資料,但是未提交的寫事務將會禁止其他事務訪問該行。

可重複讀取(repeatable read):禁止不可重複讀取和髒讀取,但是有時可能出現幻影資料。這可以通過「共享讀鎖」和「排他寫鎖」實現。讀取資料的事務將會禁止寫事務(但允許讀事務),寫事務則禁止任何其他事務。

序列化(serializable):提供嚴格的事務隔離。它要求事務序列化執行,事務只能乙個接著乙個地執行,但不能併發執行。如果僅僅通過「行級鎖」是無法實現事務序列化的,必須通過其他機制保證新插入的資料不會被剛執行查詢操作的事務訪問到。

4、事務四個隔離級別對比:

1)未提交讀(read uncommitted):select語句以非鎖定方式被執行,所以有可能讀到髒資料,隔離級別最低。

2)提交讀(read committed):只能讀取到已經提交的資料。即解決了髒讀,但未解決不可重複讀。

3)可重複讀(repeated read):在同乙個事務內的查詢都是事務開始時刻一致的,innodb的預設級別。在sql標準中,該隔離級別消除了不可重複讀,但是還存在幻讀。

4)序列讀(serializable):完全的序列化讀,所有select語句都被隱式的轉換成select ... lock in share mode,即讀取使用表級共享鎖,讀寫相互都會阻塞。隔離級別最高。

資料庫事務 ACID

資料庫事務 acid 1.原子性 atomicity 乙個事務必須被視為乙個不可分割的最小工作單元,整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾。對於乙個事務來說,不可能只執行其中的一部分操作,這就是事物的原子性。2.一致性 consistency 資料庫總是從乙個一致性的狀態轉換到另外乙...

資料庫事務 ACID

事務 乙個操作,乙個要執行sql語句,要麼執行,要麼不執行,是乙個不可分割的工作單位。有如下特性 a 原子性 atomicity c 一致性 consistency i 隔離性 isolation d 永續性 durability 先理解資料庫的一致性 參考這篇部落格 考慮如下場景 公司給員工發工資...

資料庫事務 ACID

acid,指資料庫事務正確執行的四個基本要素的縮寫。包含 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 乙個支援事務 transaction 的資料庫,必須要具有這四種特性,否則在事務過程 transaction process...