tidb既然是分布式数据库,所以它的事务应该可其它数据库事务有着不同的区别。我们来了解下tidb的数据库事务。

(一)事物

   1.几种数据库的默认隔离级别:
tidb是乐观锁
 

(二)事务语句

TiDB 支持分布式事务。涉及到事务的语句包括 autocommit 变量、[BEGIN|START TRANSACTION]COMMIT 以及 ROLLBACK。下面我们逐步了解这几个事务语句。

1.autocommit(自动提交)

  } 

通过设置 autocommit 的值为 1,可以将当前 Session 设置为自动提交状态,0 则表示当前 Session 为非自动提交状态。默认情况下,autocommit 的值为 1。在自动提交状态,每条语句运行后,会将其修改自动提交到数据库中。否则,会等到运行 COMMIT 语句或者是某些会造成隐式提交的情况,比如,执行 [BEGIN|START TRANCATION] 语句的时候会试图提交上一个事务,并开启一个新的事务。

2.START TRANSACTION, BEGIN(开始提交事务)

BEGIN;

START TRANSACTION;

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。

最新文章

  1. Bootstrap学习------Tabel
  2. DOM--6 向应用程序中加入ajax
  3. [转]MySQL排序原理与案例分析
  4. PHP通过反射方法调用执行类中的私有方法
  5. xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误
  6. 黑马程序员——JAVA基础之set集合
  7. hdu 5253 最小生成树
  8. Int16 Int32 Int64
  9. git使用之错误分析及解决(持续更新)
  10. three.js的组合与合并,raycaster射线无法获取group
  11. 【Linux-Redhat】新手需要知道的Linux命令
  12. git之关联远程仓库
  13. fzu2204 dp
  14. Python 基础list 增删改查 解析
  15. Excel文件转为其他格式文件
  16. 简单直白的去理解AOP,了解Spring AOP,使用 @AspectJ - 读书笔记
  17. Spring整合MyBatis(一)MyBatis独立使用
  18. 撩课-Python-每天5道面试题-第4天
  19. centos6.8安装Discuz!X3.1(PHP论坛)
  20. EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法

热门文章

  1. NLP基本模型
  2. PCL中outofcore模块---基于核外八叉树的大规模点云的显示
  3. 在nginx环境下搭建基于ssl证书的websocket服务转发,wss
  4. spark 性能优化简要总结
  5. [QT] - MjpegStreamer客户端(简易版)#工程源码
  6. Maven手动导本地jar到项目
  7. PHP扩展插件imagick使用笔记
  8. SSM学习系列
  9. redis单机多节点集群
  10. js中常见的创建对象的方法(1)