標籤:tab inno 引擎 2.3 多少 需要 一致性 嚴格 規則
前言:
因為沒有多少時間和精力,目前無法深入研究資料庫中的事務,比如
但是,對於事務的一些基本知識,還是需要牢牢掌握的,做到瞭解事務的基本常識,在實際開發中能夠理解各個持久層架構對事務的處理
一:是麼是事務?
下面是百度百科的結果
在開發中對於一個商務邏輯需要對資料進行的一系列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中的事務