⑴ 關系型資料庫事務的ACID特性與實現
ACID 是為保證事務(transaction)是正確可靠的,所必須具備的四個特性:
以 A 給 B 轉賬100元為例:
MySQL事務是由 InnoDB 存儲引擎實現的。
可以用如下的命令顯式的開啟事務:
另外,在自動提交(autocommit)模式下,我們執行的每一條 SQL 語句都是一條獨立的事務;如果關閉了自動提交(autocommit)模式,則所有的 SQL 語句都在一個事務中,直到執行了 commit 或 rollback,該事務結束,同時開始了另外一個事務。
MySQL 事務的 ACID 特性靠如下機制實現:
Go 語言的 Gorm 提供了對於事務操作的支持:
此外,還有嵌套事務以及手動事務等操作,可以參考中文文檔: learnku.com/docs/gorm/v…
@Transactional 註解必須添加在public方法上,private、protected方法上是無效的。
一般情況下,推薦將@Transactional 註解加在方法上,因為@Transactional直接加在類或者介面上,@Transactional註解會對類或者介面裡面所有的public方法都有效,會影響性能。