浅谈tidb事务与MySQL事务之间的区别
MySQL是我们日常生活中常见的数据库,他的innodb存储引擎尤为常见,在事务方面使用的是扁平事务,即要么都执行,要么都回滚。而tidb数据库则使用的是分布式事务。两者都能保证数据的高一致性,但是在实现方式上是不一样的。
我们先来看看MySQL的事务机制,采用redo log机制来保证事务更新的一致性和持久性。那我们来看看innodb重做日志的内部机制。
当更新数据时,innodb内部的操作流程是:
而tidb数据库,在事务上采用的是乐观锁:
TiDB 使用乐观事务模型,在执行 Update
、Insert
、Delete
等语句时,只有在提交过程中才会检查写写冲突,而不是像 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事务之间的区别相关推荐
- C中堆管理—浅谈malloc,free,calloc,realloc函数之间的区别
2019独角兽企业重金招聘Python工程师标准>>> 在进行C/C++编程的时候,需要程序员对内存的了解比较好清楚,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由 ...
- 浅谈防火墙、IDS和IPS之间的区别
现在市场上的主流网络安全产品可以分为以下几个大类: 1.基础防火墙类 其主要功能实现就是对IP:port的访问进行控制,默认情况下关闭所有的通过型访问,只开放允许访问的. 2.IDS类(入侵检测系统( ...
- 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...
本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇.如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和 ...
- html4与html5效果,浅谈HTML5与HTML4的10个关键区别
HTML5是HTML标准的下一个版本.越来越多的程序员开始HTML5来构建网站.如果你同时使用HTML4和HTML5的话,你会发现用HTML5从头构建,比从HTML4迁移到HTML5要方便很多.虽然H ...
- 计算机英语和普通英语区别表现,浅谈日常英语与计算机专业英语的区别
龙源期刊网 http://www.doczj.com/doc/2d53884ba31614791711cc7931b765ce05087a97.html 浅谈日常英语与计算机专业英语的区别 作者:李璐 ...
- python中dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别
如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...
- python dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别
如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...
- python中image什么意思_浅谈python图片处理Image和skimage的区别
做cnn的难免要做大量的图片处理.由于接手项目时间不长,且是新项目,前段时间写代码都很赶,现在稍微总结(恩,总结是个好习惯). 1,首先安装python-Image和python-skimage.py ...
- python中astype用法_浅谈python 中的 type(), dtype(), astype()的区别
如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...
最新文章
- python3.7.2安装包_Win10下python 2.7与python 3.7双环境安装教程图解
- matlab提取艾里斑,艾里斑:我不是雀斑
- 2010年最具潜力微博网站排行榜(转)
- python二叉树最大深度的计算_Python学习笔记24(二叉树遍历、最大深度、最大宽度)...
- 【机器学习】决策树的理论与实践
- 关于jQuery、AJAX、JSON(一)
- CAJViewer 无法获取document路径问题--360卫士C盘搬家
- IDEA插件开发实战
- 同步助手 android 微信 表情包,微信表情轻松导,同步助手带你装逼带你飞
- 君正X1000芯片软件开发手册
- 面试笔试杂项积累-Unity
- pug 编译html,pug之HTML模板引擎安装编译教程
- 2019Python人工智能前景怎么样?
- 基于加密机制的WebService访问与通信安全
- 网络天气预报项目笔记(Qt)
- 2021年,从事数据分析行业前景如何?还能转行数据分析师吗?(下)
- 如何正确的设置使用代理IP?
- rabiitmq卸载_RabbitMQ 的安装与卸载 以及各种踩坑
- ES MQ canal同步mysql
- vue3 组件篇 tag
热门文章
- AI自动设计了“超级马里奥”新关卡,成功晋升游戏设计师(GECCO 2018最佳论文提名)...
- 又出现依赖冲突?试试 IDEA 解决 Maven 依赖冲突的高能神器!
- Java封装OkHttp3工具类
- GitHub 骚操作,个人页还能这么玩?
- 牛逼哄哄的布隆过滤器,到底有什么用?
- 一文总结词向量的计算、评估与优化
- 我的XGBoost学习经历及动手实践
- 北大美女学霸力压大神何恺明新作MAE!怒摘12个SOTA,灵感竟来自16年前CVPR论文...
- 失业后跑摩的985高校硕士,被质疑学历、深“扒”论文...
- 图解NumPy,这是理解数组最形象的一份教程了