tidb既然是分散式資料庫,所以它的事務應該可其它資料庫事務有著不同的區別。我們來瞭解下tidb的資料庫事務。 (一)事物 1.幾種資料庫的預設隔離級別: tidb是樂觀鎖 (二)事務語句 (二)事務語句 TiDB 支持分散式事務。涉及到事務的語句包括 autocommit 變數、[BEGIN|ST ...
tidb既然是分散式資料庫,所以它的事務應該可其它資料庫事務有著不同的區別。我們來瞭解下tidb的資料庫事務。
(一)事物
1.幾種資料庫的預設隔離級別: 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。