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,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237004.html
標籤:其他
