資料庫事務四大特性 隔離級別

2021-10-04 01:25:32 字數 1652 閱讀 4837

要熟悉事務之前我們先了解一下sql:

概念:事務就是一組dml語句組成,這些語句在邏輯上存在關聯性,有要麼全部成功,要麼全部失敗。

(1)原子性:乙個事務是乙個不可分割的整體,為了保證事務的總體目標,事務必須具有原子性,即當資料修改時,要麼全部執行,要麼全部不執行。即,不允許事務部分的完成,避免了只執行這些操作的一部分帶來的錯誤。

(2)一致性:乙個事務再執行之前和執行之後,資料庫資料必須保持一致性。資料庫的一致性狀態應該滿足模式所制定的約束條件,那麼在完整執行該事務後,資料庫仍處於一致性狀態。例如:銀行轉賬,轉賬前後兩個賬戶金額之和不變。

(3)隔離性:由併發事務所做的修改必須與任何其他併發事務所做的修改隔離。事務檢視資料庫時資料所處的狀態,要麼是另一併發事務修改他之前的狀態,要麼是另一事務修改它之後的狀態,事務不會檢視中間狀態的資料。

(4)永續性:永久性,事務完成之後,dbms保證他對資料庫中資料的修改是永久的,當系統或者介質發生故障時,該修改也永久保持,永續性一般通過資料庫備份與恢復來保證。

(1)更新丟失:兩個事務同時更新一行資料,乙個事務對資料的更新把另乙個事務對資料的更新覆蓋了,只是因為系統沒有執行任何鎖操作,因此併發並沒有被隔離開來。

(2)髒讀:乙個事務讀取到了另乙個事務未提交的資料操作結果,這是相當危險的,印尼為很可能所有的操作都被回滾。

(3)不可重複讀:乙個事務對同一行資料重複讀取兩次,但卻得到了不一樣的結果,包括:

虛讀:事務t1讀取某一資料後,事務t2對其作了修改,當事務t1再次讀取該資料時得到與前一次不同的值。

幻讀:事務在操作過程中進行兩次查詢,第二次查詢的結果包含了第一次查詢中未出現的資料或者缺少了第一次查詢**現的資料。這是因為兩次查詢過程中有另乙個事務插入資料造成的。

(1)讀未提交:只更新丟失。允許其他事物看到沒提交的資料;則不允許其他事務同時進行寫操作,但允許其他事務讀。可以通過「排他鎖」實現。

(2)讀提交:處理更新丟失,髒讀。被讀取的資料可以被其他事務修改:讀取資料的事務允許其他事物繼續訪問該行資料,但是未提交的寫事務將會禁止其他事務訪問改行。可以通過「 瞬間共享讀鎖」和「排他寫鎖」實現。

(3)可重複讀取:處理更新丟失,髒讀和不可重複讀取。所有被select獲取的資料都不能被修改,這樣就可以避免乙個事務前後讀取資料不一致的情況;讀取資料的事務將會禁止寫事務,但允許讀事務,寫事務則禁止任何其他事物。可以通過「 共享讀鎖 」和「 排他寫鎖 」實現。

(4)序列化:提供嚴格的事務隔離。事務只能乙個乙個執行,不能併發執行。僅通過「 行級鎖 」無法實現序列化,必須通過其他機制保證新插入的資料不會被綱脂性的查詢操作的事務訪問到。

mysql資料庫的預設隔離級別是可重複讀。隔離級別越高,月能保證資料的完整性和統一性,但是對併發效能影響也很大。對於大多數的應用程式,可以優先考慮把資料庫的隔離級別設為read committed(讀提交),他能避免髒讀,具有較好的併發性,儘管它會導致不可重複讀,幻讀和第二類丟失更新這些併發問題,在可能出現這類問題的個別場合,可以有應用程式採用悲觀和樂觀鎖來控制。

資料庫事務 四大特性 隔離級別

以下引用自 原子性 atomicity 乙個事務要麼全部執行,要麼不執行 一致性 consistency 事務的執行並不改變資料庫中資料的一致性。例如,完整性約束了a b 10,乙個事務改變了a,那麼b也隨之改變 拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何...

資料庫事務四大特性 隔離級別

以轉賬為例 事務是指滿足acid的一組操作,可以通過commit提交乙個事務,也可以使用rollback進行回滾。1.原子性 atomicity 事務被視為不可分割的最小單元,事務的所有操作要麼全部提交成功,要麼全部失敗回滾。2.一致性 consisitency 資料庫在事務執行前後都保持一致性狀態...

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

資料庫的事務的四大特性 acid 原子性 atomicity 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾。一致性 consistency 一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。舉個例子,事務開始前,a...