TiDB事务隔离级别和并发控制的特点详述

       TiDB作为新一代分布式SQL数据库,它支持强一致性事务。ANSI SQL-92 对于事务的隔离级别有明确的定义,这也是大部分传统数据库(MySQL、PostgreSQL、Oracle、DB2、SqlServer等)都遵循的标准。TiDB的事务隔离级别并没有完全支持ANSI标准中的所有隔离级别,它缺省的隔离级别是"Snapshot Isolation"(简称SI),这种隔离级别类似于 ANSI 标准中的 "可重复读"(简称RR),但是与它又不完全相同:RR会发生“幻像读”,SI不会发生;RR不会发生“写偏斜(write skew)”,而SI会发生。准确理解TiDB的事务隔离级别是非常重要的,特别对于应用开发人员来说,如果不了解TiDB事务隔离级别的特点以及"乐观锁"的特点,那么就无法开发出正确的应用。下面将结合一些例子对TiDB的SI隔离级别和乐观锁机制进行详细的说明,希望对大家能有所帮助。

      1.  创建示例数据库和示例表

       这里使用的TiDB环境,假设用户已经阅读过本人写的文章“使用Docker Compose快速搭建一个单机TiDB集群”。为了很好的理解这些例子,希望大家能动手试一试。

       (1) 使用mysql client连接到TiDB

             mysql -h 127.0.0.1 -P 4000 -u root

       (2) 创建数据库

             create database bankdb;

       (3) 创建用户表

            create table account ( id int, name varchar(8), balance decimal, primary key (id) );

       (4) 插入示例数据

            insert into account values(1,'user1',100) , (2,'user2',100);

       2. SI隔离级别不会发生"幻像读"

            事务1                                                                       事务2

            begin;                       

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值