資料庫基礎之事務

2021-09-26 09:52:00 字數 2170 閱讀 6758

一 事務概念:

事務指對資料庫邏輯上的一組操作,組成這組操作的單元,要麼全部成功,要麼全不成功

比如a向b轉賬的操作:

1:update from account set money=money-100 where user=a;

2:update from account set money=money+100 where user=b;

操作1,2要麼全完成,要麼全不完成,這才符合事務,

如果1完成,2不完成則不符合事務

二 mysql操作事務的命令

模擬a,b轉賬情景:

首先執行第一條update語句,可以看到表中a的數值減少100,但是關閉dos視窗,事務沒被提交,a的餘額仍然恢復原來數值。

當1,2條update語句都執行完之後,在事務提交後a賬戶減少100,b賬戶增加100。

通過手動rollback後,資料庫的更新操作都將失效,資料都會恢復原來的值

三 事務不考慮隔離性可能會引發的問題

在併發事務執行過程中,乙個事務把另乙個事務的執行結果給覆蓋了。列如a,b事務同時併發執行,然後事務a先執行update,提交後事務b也執行update然後事務b回滾,導致事務a的更新丟失了。

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

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

1.update account set money=money+100 where name=『b』;

2.update account set money=money-100 where name=『a』;

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

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

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

虛讀(幻讀)是指在乙個事務內讀取到了別的事務插入的資料,導致前後讀取不一致。可以利用設定隔離級別set transaction isolation level = serializable來解決

四 事務的四種隔離級別和七種傳播行為

乙個事務在執行過程中可以看到其他事務沒有提交的新插入的記錄,而且能看到其他事務沒有提交的對已有記錄的更新

乙個事務在執行過程中可以看到其他事務已經提交的新插入的記錄,而且能看到其他事務已經提交的對已有記錄的更新

個事務在執行過程中可以看到其他事務已經提交的新插入的記錄,但是不能看到其他其他事務對已有記錄的更新

乙個事務在執行過程中完全看不到其他事務對資料庫所做的更新(事務執行的時候不允許別的事務併發執行。事務序列化執行,事務只能乙個接著乙個地執行,而不能併發執行)

mysql資料庫預設的事務隔離級別是:repeatable read(可重複讀)

mysql資料庫設定事務隔離級別:set transaction isolation level 隔離級別名

1、propagation_required:如果當前沒有事務,就建立乙個新事務,如果當前存在事務,就加入該事務,該設定是最常用的設定。

2、propagation_supports:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就以非事務執行。『

3、propagation_mandatory:支援當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就丟擲異常。

4、propagation_requires_new:建立新事務,無論當前存不存在事務,都建立新事務。

5、propagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

6、propagation_never:以非事務方式執行,如果當前存在事務,則丟擲異常。

7、propagation_nested:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。

資料庫之事務

事務是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是個不可分割的工作單位。如果某一事務成功,則在該事務中進行的所有資料更改均會提交,成為資料庫中永久的組成部分。如果事務遇到錯誤,則必須取消或回滾,所有資料均被更改清除。1 原子性 atomicity 事務是資料庫的邏輯工...

資料庫之事務

概述 事務一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 特徵 事務具有4個基本特徵,分別是 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 duration 簡稱acid。原子性事務的原子性...

資料庫 之 事務

本文將以mysql為主分析 在mysql中只有使用了innodb資料庫引擎的資料庫或表才支援事務 事務處理可以用來維護資料庫的完整性,保證成批的sql語句要麼全部執行,要麼全部不執行 事務用來管理insert update delete語句。事務必須滿足4個條件acid a atomicity 原子...