tidb既然是分布式數據庫,所以它的事務應該可其它數據庫事務有着不同的區別。我們來了解下tidb的數據庫事務。
(一)事物

(二)事務語句
TiDB 支持分布式事務。涉及到事務的語句包括 autocommit
變量、[BEGIN|START TRANSACTION]
、COMMIT
以及 ROLLBACK。下面我們逐步了解這幾個事務語句。
1.autocommit(自動提交)
SET autocommit = {0 | 1}
通過設置 autocommit 的值為 1,可以將當前 Session 設置為自動提交狀態,0 則表示當前 Session 為非自動提交狀態。默認情況下,autocommit 的值為 1。在自動提交狀態,每條語句運行后,會將其修改自動提交到數據庫中。否則,會等到運行 COMMIT 語句或者是某些會造成隱式提交的情況,比如,執行 [BEGIN|START TRANCATION] 語句的時候會試圖提交上一個事務,並開啟一個新的事務。
2.START TRANSACTION, BEGIN(開始提交事務)
1 BEGIN;
2 START TRANSACTION;
3 START TRANSACTION WITH CONSISTENT SNAPSHOT;
三條語句都是事務開始語句,效果相同。通過事務開始語句可以顯式地開始一個新的事務,如果這個時候當前 Session 正在一個事務中間過程中,會將當前事務提交后,開啟一個新的事務。
3.COMMIT(提交)
提交當前事務,包括從 [BEGIN|START TRANSACTION] 到 COMMIT 之間的所有修改。
4.ROLLBACK(回滾)
回滾當前事務,撤銷從 [BEGIN|START TRANSACTION] 到 ROLLBACK 之間的所有修改。
(三)顯式事務和隱式事務
- TiDB 可以顯式地使用事務([BEGIN|START TRANSACTION]/COMMIT)或者隱式的使用事務(SET autocommit = 1)。
- 如果在 autocommit = 1 的狀態下,通過 [BEGIN|START TRANSACTION] 語句開啟一個新的事務,那么在 COMMIT/ROLLBACK 之前,會禁用 autocommit,也就是變成顯式事務。
- 對於 DDL 語句,會自動提交並且不能回滾。如果運行 DDL 的時候,正在一個事務的中間過程中,會先將當前的事務提交,再執行 DDL。