資料庫事務

2021-07-22 16:25:08 字數 1666 閱讀 2869

一、  事務的概念

事務指邏輯上的一組操作,組成這組操作的各個單元,要不全部成功,要不全部不成功。

二、  事務的特性(acid)

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

2.一致性(consistency):事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。

3隔離性(isolation):事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作的資料所干擾,多個併發事務之間要相互隔     離。

4.永續性(durability):指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。

三、  事務的隔離級別

1.髒讀 :指乙個事務讀取了另外乙個事務未提交的資料

這是非常危險的,假設a向b轉賬100元,對應sql語句如下:

update account set money=money+100 where name='b';

update account set money=money-100 where name='a';

當第一條sql執行完,第二條還沒執行(a未提交時),如果此時b查詢自己的賬戶,就會發現自己多了100元錢。如果a等b走後再回滾,b就會損失100元。

2.不可重複讀:在乙個事務內讀取表中的某一行資料,多次讀取結果不同。

例如銀行想查詢a賬戶餘額,第一次查詢a賬戶為200元,此時a向賬戶存了 100元並提交,銀行接著又進行了一次查詢,此時a賬戶為300元了。銀行兩次查詢不一致,可能就會很困惑,不知道哪次查詢是準的。

和髒讀的區別是,髒讀是讀取前一事務未提交的髒資料,不可重複度是重新讀取了前一事務已提交的資料。

3.虛讀:指在乙個事務內讀取到了別的事務插入的資料,導致前後讀取不一致

例如丙存款100元未提交,這時銀行做報表統計account表中所有使用者的總額為500元,然後丙提交了,這時銀行再統計發現賬戶為600元了,造成虛讀同樣會使銀行不知所措,到底以哪個為準。

三、  事務隔離性的設定語句

資料庫一共定義了四種隔離級別:

1.serializable:可避免髒讀、不可重複讀、虛讀情況的發生。(序列化)

2.repeatable:可避免髒讀、不可重複讀情況的發生。(可重複讀)

3.read committed:可避免髒讀情況的發生。(讀已提交)

4.serializable:最低級別,以上情況均無法保證。(讀未提交)

設定事務隔離級別:set transaction isolation level 級別名稱

例如:set transaction isolation level read uncommitted;

查詢當前事務隔離級別:select @@tx_isolation

資料庫事務

事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...

資料庫 事務

資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...

資料庫事務

這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...