什么是數據庫的事務?MySql中哪些存儲引擎支持事務?


什么是事務?

事務由一個或多個sql語句組成一個整體,如果所有的語句執行成功那么修改將會全部生效,如一條sql語句將銷量+1,下一條再+1,倘若第二條失敗,那么銷量將撤銷第一條sql語句的+1操作,只有在該事務中所有的語句都執行成功才會將修改加入到數據庫中。


事務的特性

事務具體四大特性,也就是經常說的ACID 
1. 原子性(Atomicity) 
  原子性是指事務包含的所有操作要么全部成功,要么全部失敗回滾,因此事務的操作如果成功就必須要完全應用到數據庫,如果操作失敗則不能對數據庫有任何影響。 
   
2. 一致性(Consistency) 
  一致性是指事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行之后都必須處於一致性狀態。

  拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那么不管A和B之間如何轉賬,轉幾次賬,事務結束后兩個用戶的錢相加起來應該還得是5000,這就是事務的一致性。

3.隔離性(Isolation) 
  隔離性是當多個用戶並發訪問數據庫時,比如操作同一張表時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,多個並發事務之間要相互隔離。

  即要達到這么一種效果:對於任意兩個並發的事務T1和T2,在事務T1看來,T2要么在T1開始之前就已經結束,要么在T1結束之后才開始,這樣每個事務都感覺不到有其他事務在並發地執行。

4.持久性(Durability) 
  持久性是指一個事務一旦被提交了,那么對數據庫中的數據的改變就是永久性的,即便是在數據庫系統遇到故障的情況下也不會丟失提交事務的操作。Mysql中會保存有相應的操作日志,即使遭遇故障依然能夠通過日志恢復最后一次更新。

 

  例如我們在使用JDBC操作數據庫時,在提交事務方法后,提示用戶事務操作完成,當我們程序執行完成直到看到提示后,就可以認定事務以及正確提交,即使這時候數據庫出現了問題,也必須要將我們的事務完全執行完成,否則就會造成我們看到提示事務處理完畢,但是數據庫因為故障而沒有執行事務的重大錯誤。


MySql中支持事務的引擎

在mysql中用的最多的存儲引擎有:innodb,bdb,myisam ,memory 等。其中innodb和bdb支持事務而myisam等不支持事務。

轉載自: https://blog.csdn.net/u013019431/article/details/78545749


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM