資料庫事務特性和隔離級別

2022-09-11 10:51:10 字數 1563 閱讀 7686

一組業務操作,要麼全部成功,要麼全部不成功。

原子性:乙個事務是乙個整體,不可分割,事務中的操作要麼都成功,要麼都失敗。

一致性:事務必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。事務執行前後,資料庫的狀態是一致的。

例如:a有1000,元,b有1000元,加起來是2000,中間執行轉賬的操作,轉賬後兩個人的錢加起來還是2000.

隔離性:兩個或多個事務併發操作,之間會互相影響。資料庫提供了隔離級別來消除這些影響。

永續性:一旦乙個事務提交了,對資料庫中的資料的影響就是永久的了,如果資料庫出現故障或者其他操作都不應該再對其產生影響。

以上是事務的四個特性簡稱acdi,重點是事務的隔離性,在對資料庫進行操作的時候,開啟多個事務同時進行操作,為了能夠準確的獲取資料,資料庫要有隔離性。如果沒有隔離性的話,會出現以下幾個隔離問題:

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

不可重複讀:乙個事務讀到了另乙個事務已經提交的資料(主要針對update)

幻讀/虛讀:乙個事務讀到了另乙個事務已經提交的資料(主要針對insert)

為了避免這些問題,資料庫提供了四種隔離級別(級別由低到高,效率由高到低)

read uncommitted:讀未提交,最低級別,存在髒讀,不可重複讀,幻讀三個問題

read committed:讀已提交,只能在當前事務中讀取到其他事務已經提交的資料。避免了髒讀的問題。

repeatable read:可重複讀,避免了髒讀和不可重複讀的問題。

serializable:序列化,避免髒讀,不可重複讀,幻讀的發生。相當於給事務加了鎖,效率會比較低。

在mysql資料庫中,支援以上四種事務隔離級別,預設的事務隔離級別為repeatable read;

在oracle資料庫中,支援read committed、serializable兩種事務隔離級別,預設的隔離級別為read committed;

使用jdbc來對資料庫事務進行管理:對事務隔離級別的設定要在開啟事務之前

部分**:

s**epoint(儲存點):記錄操作的當前位置,之後可以回滾到指定的位置

資料庫事務特性和隔離級別

一 事務的基本要素 acid 1 原子性 atomicity 事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是乙個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。2 一致性 co...

資料庫事務特性和隔離級別

資料庫事務是資料庫管理系統執行過程中的乙個邏輯單位,有乙個有限的資料庫操作序列完成。以 a賬戶向b賬戶匯錢 為例,乙個事務是下面乙個操作序列 a.從a賬號中把餘額讀出來。b.對a賬號做減法操作。c.把結果寫回a賬號中。d.從b賬號中把餘額讀出來。e.對b賬號做加法操作。f.把結果寫回b賬號中。事務有...

資料庫事務的特性和隔離級別

acid的事務特性 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 原子性就是要麼成功要麼失敗。一致性就是比如存款總額不變。從乙個一致性狀態轉移到另乙個一致性狀態。事務之間不可以相互影響。事務在提交之前是不被其他事務可見的。事務完...