對於開發工程師來說,資料庫知識是必備的基礎知識,因此對資料庫的深入學習是必須的。無論是在工作中還是在面試中,資料庫知識走佔據了很重要的地位。而事務在資料庫中,是一個極其重要的概念,因此搞清楚事務的相關的知識很有必要。
1、事物
事務(transaction) 是指一組資料庫操作,要麼全部成功,要麼全部失敗。
以「A賬戶向B賬戶轉賬100元」這個轉賬操作為例說明。A賬戶要給B賬戶轉賬,需要經歷以下步驟:
- 1.讀取A賬戶餘額;
- 2.將A賬戶餘額減去100元;
- 3.更新A賬戶餘額;
- 4.讀取B賬戶餘額;
- 5.將B賬戶餘額加100元;
- 6.更新B賬戶餘額。
為了保證數據的一致性,這一組操作(以上的6個操作)要麼全部完成,要麼全部失敗。這就是事務。
本文將探討MySQL資料庫的事務特性。MySQL資料庫主要包括Server層和引擎層,MySQL的事務支持是在引擎層實現的。MySQL是一個支持多引擎的系統,但是並不是說所有的引擎都支持事務。例如,MySQL原生的MyISAM引擎就不支持事務,而InnoDB則支持事務,因此在MySQL資料庫中,InnoDB取代了MyISAM,成為默認的存儲引擎。