十:MYSQL中的事務
前言:
因為沒有多少時間和精力,目前無法深入研究數據庫中的事務,比如
但是,對於事務的一些基本知識,還是需要牢牢掌握的,做到了解事務的基本常識,在實際開發中能夠理解各個持久層框架對事務的處理
一:是麽是事務?
下面是百度百科的結果
在開發中對於一個業務邏輯需要對數據進行的一系列CRUD操作,這一系列操作,我們可以把它稱為一個事務
這樣理解事務就必須了解事務四大特性:原子性 、一致性、隔離性、持久性
二:事務的四大特性--ACID
2.1:原子性
在一個事務中對數據的所有操作,屬於一個單元,不可分割,只有成功或者失敗,不可能某個操作成功某個操作失敗
2.2:一致性
事務前後,數據的一致性,在既定規則下的事務處理過程中,必須嚴格按照既定規則操作數據,不可破壞規則
維護數據的一致性任務應該由程序員來完成
比如數據修改前為 10.00 修改完後變成了 5.5 滿足一致性應該為5.50(這是我自己的理解)
2.3:隔離性
體現在並發事務情況下,多個事務互相隔離,互不影響
2.4:持久性
在正確提交事務後,對數據的修改將是永久性的
三:事務的隔離級別
體現在並發事務中的讀的操作
事務有四個隔離級別:READ-UNCOMMITTED 、 READ COMMITTED、 REPEATABLE READ 、 SERIALIZABLE
3.1:臟讀
在事務A中讀取到事務B修改了但是未提交的數據
3.2:不可重復讀
解決了臟讀,但是在事務A中可以讀取到事務B提交後的數據(導致在事務A中多次執行相同的讀的操作的結果不同)
3.3:可重復讀
解決了不可重復讀,但是事務B在提交事務前後分別執行讀相同操作讀取數據,發現前後結果不一樣,好像之前讀到的數據是一個幻象
3.4:串行化
四:事務的分類
4.1:扁平事務(FLAT TRANSACTION)
4.2:帶有保存點的扁平事務(FLAT TRANSACTION WITH SAVPOINTS)
4.3:鏈式事務(Chained TRANSACTION)
4.4:嵌套事務(Nested Transaction) InnoDB不支持
4.5:分布式事務(Distributed Transaction)
五:MYSQL中的事務
innoDB是MYSQL數據庫的默認存儲引擎,支持事務操作
本來想自己親手測試一下,不同事務隔離級別對數據讀取的影響,想想還是算了吧,了解了就可以了
MYSQL默認事務隔離級別是REPEATABLE READ---可重復讀
十:MYSQL中的事務