資料庫 事務

2021-10-10 00:24:57 字數 1390 閱讀 8102

5 如何防止事務併發讀問題的產生

6 事務隔離級別

7 資料庫鎖

8 事務與資料庫鎖的關係

9 mysql儲存引擎innodb與myisam

9.1 myisam

9.2 innodb(預設)

事務就是將一堆的sql語句(通常是增刪改操作)繫結在一起執行,要麼都執行成功,要麼都執行失敗,即都執行成功才算成功,否則就會恢復到這堆sql執行之前的狀態。

-- 開啟事務

start

transaction

;--sql操作...

-- 回滾事務

rollback

;--提交事務

commit

;--中斷操作

quit;

多個事務對相同的資料同時進行操作,這叫做事務併發.可能會導致各種併發問題

例如:在乙個事務中,a給b轉賬100元但未提交事務,在另一事務中b查詢賬戶金額,查詢到了a未提交更新的資料,我們稱之為髒讀

對同一記錄的兩次讀取結果不一致,因為在兩次查詢期間,有另一事務對該記錄做了修改(是針對修改操作)

例如:在事務1中,前後兩次查詢a賬戶的金額,在兩次查詢之間,另一事務2對a賬戶的金額做了修改(並且也提交了事務),此種情況可能會導致事務1中,前後兩次查詢的結果不一致。這就是不可重複讀

對同一張表的兩次查詢結果不一致,因為在兩次查詢期間,有另一事務進行了插入或者是刪除操作(是針對插入或刪除操作);

-- mysql查詢當前的事務隔離級別

select @@tx_isolation

;-- mysql設定事務隔離級別

set tx_isolation=

'read-uncommitted'

;

事務隔離級別分四個等級

安全性最差,可能出現任何事務併發問題(比如髒讀、不可以重複讀、幻讀等)

但效能最好(不使用!!)

可以防止髒讀,但不能防止不可重複讀,也不能防止幻讀;

可以防止髒讀不可重複讀,但不能防止幻讀問題;

安全性最高,不會出現任何併發問題,因為它對同一資料的訪問是序列的,非併發訪問;

在myisam中只用到表鎖

innodb實現了行級鎖和表鎖,innodb行鎖是通過給索引上的索引項加鎖來實現的,只有通過索引條件檢索資料,innodb才使用行級鎖,否則,innodb將使用表鎖。

myisam的索引和資料是分開的

索引和資料是緊密**的

資料庫事務

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

資料庫 事務

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

資料庫事務

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