事務是由一組sql 語句組成的邏輯處理單元。
事務的四個屬性:
原子性(atomicity):是指事務是乙個不可再分割的工作單位,對事務中的資料的操作要麼都完成要麼都不完成。
一致性(consistent):在事務開始和完成時,資料都必須保持一致性。這意味著所有相關的資料規則都必須應用於事務的修改,以保持資料的完整性:在事務結束時,所有的內部的資料結構也都必須是正確的。
隔離性(isolation):是指多個使用者併發訪問資料庫時,乙個事務的執行不會被其他事務所干擾。這意味著事務處理過程中的中間狀態是對外部不可見的。
永續性(durable):是指乙個事務一旦被提交,它對資料庫的改變是永久的,即使資料庫發生故障時也不會對資料產生影響。
當mysql 處理併發事務時可能會出現的問題:
更新丟失:多個執行緒基於同乙個查詢結果,後序操作覆蓋了前面的操作
髒讀:乙個事務讀取到另乙個事務未提交的資料
不可重複讀:在乙個事務內讀取同乙個資料,多次讀取到的資料結果不同
虛讀(幻讀):指乙個事務內讀取到了別的事務插入的資料,倒導致前後結果不一致
事務的四大隔離級別:
type
介紹read uncommitted
不防止任何隔離性問題,具有上述所有問題
read committed
只能防止髒讀問題
repeatable read
可以防止髒讀和不可重複讀
serializable
可以防止髒讀,不可重複讀和幻讀/td>
隨著資料庫的隔離級別越嚴格,併發帶來的問題也就越小,但是付出的代價也就越大,因為事務隔離實質上是使事務在一定程度上「序列化」進行,這顯然是併發相衝突的。同時,不同的應用對讀一致性和事務隔離程度的要求也是不同的。mysql:預設的隔離級別是repeatable,oracle:預設的隔離級別是read commited。我們可以使用show variables like 『tx_isolation』; 檢視資料庫的隔離級別。
MySQL事務介紹
1 事務的概念 在多個操作的sql語句當中,要麼同時成功執行,要麼同時失敗執行。2 操作步驟 a.開啟事務 start transaction b.回滾 出問題了,需要回到開啟事務之前 rollback c.提交 正常執行,將改變的資料提交結束事務 commit 3 檢視和修改事務的提交方式 a.檢...
了解mysql 事務介紹
目錄 事務由單獨單元的乙個或多個sql語句組成,在這個單元中,每乙個mysql語句是相互依賴的 由於整個單獨單元作為不可分割的整體,那麼如果單元中某條sql語句一旦執行失敗或產生失敗,整個單元就會回滾。要麼全部成功,要麼全部失敗。在mysql中用的最多的儲存引擎有 innodb,myisam,mem...
mysql事務基本介紹
執行一條命令,或者多條命令,要麼全部成功,要麼全部失敗,不存在中間狀態 執行一條命令,或者多條命令,執行前後整體保持一致 比如 a有餘額100元,b有餘額100元,a給b轉賬50元,轉賬後a有餘額50元,b有餘額150元,a b前後總額分別都是200元 隔離性是指事務和事務之間操作具有隔離性,即是乙...