MySQL是我们日常生活中常见的数据库,他的innodb存储引擎尤为常见,在事务方面使用的是扁平事务,即要么都执行,要么都回滚。而tidb数据库则使用的是分布式事务。两者都能保证数据的高一致性,但是在实现方式上是不一样的。

我们先来看看MySQL的事务机制,采用redo log机制来保证事务更新的一致性和持久性。那我们来看看innodb重做日志的内部机制。

当更新数据时,innodb内部的操作流程是:

而tidb数据库,在事务上采用的是乐观锁:

TiDB 使用乐观事务模型,在执行 UpdateInsertDelete 等语句时,只有在提交过程中才会检查写写冲突,而不是像 MySQL 一样使用行锁来避免写写冲突。类似的,诸如 GET_LOCK() 和 RELEASE_LOCK() 等函数以及 SELECT .. FOR UPDATE 之类的语句在 TiDB 和 MySQL 中的执行方式并不相同。所以业务端在执行 SQL 语句后,需要注意检查 commit 的返回值,即使执行时没有出错,commit 的时候也可能会出错。

TiDB 的事务模型采用乐观锁,只有在真正提交的时候,才会做冲突检测,如果有冲突,则需要重试。这种模型在冲突严重的场景下,会比较低效,因为重试之前的操作都是无效的,需要重复做。举一个比较极端的例子,就是把数据库当做计数器用,如果访问的并发度比较高,那么一定会有严重的冲突,导致大量的重试甚至是超时。但是如果访问冲突并不十分严重,那么乐观锁模型具备较高的效率。所以在冲突严重的场景下,推荐在系统架构层面解决问题,比如将计数器放在 Redis 中。

转载于:https://www.cnblogs.com/FengGeBlog/p/10282732.html

浅谈tidb事务与MySQL事务之间的区别相关推荐

  1. C中堆管理—浅谈malloc,free,calloc,realloc函数之间的区别

    2019独角兽企业重金招聘Python工程师标准>>> 在进行C/C++编程的时候,需要程序员对内存的了解比较好清楚,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由 ...

  2. 浅谈防火墙、IDS和IPS之间的区别

    现在市场上的主流网络安全产品可以分为以下几个大类: 1.基础防火墙类 其主要功能实现就是对IP:port的访问进行控制,默认情况下关闭所有的通过型访问,只开放允许访问的. 2.IDS类(入侵检测系统( ...

  3. 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...

    本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇.如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和 ...

  4. html4与html5效果,浅谈HTML5与HTML4的10个关键区别

    HTML5是HTML标准的下一个版本.越来越多的程序员开始HTML5来构建网站.如果你同时使用HTML4和HTML5的话,你会发现用HTML5从头构建,比从HTML4迁移到HTML5要方便很多.虽然H ...

  5. 计算机英语和普通英语区别表现,浅谈日常英语与计算机专业英语的区别

    龙源期刊网 http://www.doczj.com/doc/2d53884ba31614791711cc7931b765ce05087a97.html 浅谈日常英语与计算机专业英语的区别 作者:李璐 ...

  6. python中dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  7. python dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  8. python中image什么意思_浅谈python图片处理Image和skimage的区别

    做cnn的难免要做大量的图片处理.由于接手项目时间不长,且是新项目,前段时间写代码都很赶,现在稍微总结(恩,总结是个好习惯). 1,首先安装python-Image和python-skimage.py ...

  9. python中astype用法_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

最新文章

  1. python3.7.2安装包_Win10下python 2.7与python 3.7双环境安装教程图解
  2. matlab提取艾里斑,艾里斑:我不是雀斑
  3. 2010年最具潜力微博网站排行榜(转)
  4. python二叉树最大深度的计算_Python学习笔记24(二叉树遍历、最大深度、最大宽度)...
  5. 【机器学习】决策树的理论与实践
  6. 关于jQuery、AJAX、JSON(一)
  7. CAJViewer 无法获取document路径问题--360卫士C盘搬家
  8. IDEA插件开发实战
  9. 同步助手 android 微信 表情包,微信表情轻松导,同步助手带你装逼带你飞
  10. 君正X1000芯片软件开发手册
  11. 面试笔试杂项积累-Unity
  12. pug 编译html,pug之HTML模板引擎安装编译教程
  13. 2019Python人工智能前景怎么样?
  14. 基于加密机制的WebService访问与通信安全
  15. 网络天气预报项目笔记(Qt)
  16. 2021年,从事数据分析行业前景如何?还能转行数据分析师吗?(下)
  17. 如何正确的设置使用代理IP?
  18. rabiitmq卸载_RabbitMQ 的安装与卸载 以及各种踩坑
  19. ES MQ canal同步mysql
  20. vue3 组件篇 tag

热门文章

  1. AI自动设计了“超级马里奥”新关卡,成功晋升游戏设计师(GECCO 2018最佳论文提名)...
  2. 又出现依赖冲突?试试 IDEA 解决 Maven 依赖冲突的高能神器!
  3. Java封装OkHttp3工具类
  4. GitHub 骚操作,个人页还能这么玩?
  5. 牛逼哄哄的布隆过滤器,到底有什么用?
  6. 一文总结词向量的计算、评估与优化
  7. 我的XGBoost学习经历及动手实践
  8. 北大美女学霸力压大神何恺明新作MAE!怒摘12个SOTA,灵感竟来自16年前CVPR论文...
  9. 失业后跑摩的985高校硕士,被质疑学历、深“扒”论文...
  10. 图解NumPy,这是理解数组最形象的一份教程了