处理事务的常见方法有排队法、排他锁、读写锁、MVCC等方式。

排队法

事务处理中最重要也是最简单的方案是排队法,单线程地处理一堆数据。

在Redis中,如果数据全部在内存中,那么单线程处理所有Put、Get操作效率最高。原因在于多线程的本质是CPU模拟多个线程,这种模拟是以上下文切换为代价,这种上下文切换是需要额外开销的,而对于内存的数据库来说,没有上下文切换时效率最高。因此,单个CPU绑定一块内存的数据,针对这块数据做多次读写操作时都是在单个CPU上完成的,单线程处理方式在内存的情况是效率是最优的。

那么什么时候事务需要用到多线程呢?这个问题的本质取决于下层所使用的存储,如果是内存操作,则可以动态地申请和销毁

内存块;而磁盘的IOPS很低,但吞吐量很高。

如果一个场景涉及多次读写操作,单线程可以很高的效率对于内存进行读写操作;但是,由于磁盘的IOPS仅为内存的几千分之

一,如果依旧用操作内存的方式操作磁盘,那系统的整体性能将会很低,这意味着必须将大量的读写操作聚合成一个Batch后再提交

时才能达到较好的性能。而将大量请求攒到一起的方式一是异步,也就是请求本身和线程不绑定,线程可以不Block(本质来说还是

一种多线程的方式),处理完一个线程后再处理其他线程。这种做法的核心是将大量不同的请求提交到一个Buffer中,再由该Buffer

统一读取或者写入磁盘,从而提高效率。在慢速设备中,多线程或异步非常常见,在设计系统时,面对磁盘、网络、SSD等慢速设

备必须考虑使用多线程。

排它锁

有些场景不适合用单线程操作,可以利用排他锁的方式来快速隔离并发读写事务。

若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

读写锁

数据库中有一些事务单元是共享的,如果是一个只读的事务,例如只对数据进行查询操作,在该过程中数据一定不被修改,因此多个查询操作可以并行执行,因此一种针对读读场景的优化自然而然产生——读写锁。读写锁的核心是在多次读的操作中,同时允许多个读者来访问共享资源,提高并发性。

MVCC

在最初的数据库事务实现中是不存在MVCC的,它是Oracle在八十年代新加的功能,本质是Copy On Write,也就是每次写都是以重新开始一个新的版本的方式写入数据,因此,数据库中也就包含了之前的所有版本。在数据读的过程中,先申请一个版本号,如果该版本号小于正在写入的版本号,则数据一定可以查询到,无需等到新版本完全写完即可返回查询结果。这种方式可以在读读不阻塞的前提下,实现读写/写读不阻塞,尽可能保证所有的读操作并行,而写操作串行。

[分布式]事务处理的常见方法相关推荐

  1. 分布式系统的事务处理几种常见方法

    看到耗子叔这篇对于分布式事务处理的几种方式写的很清晰,原文:https://coolshell.cn/articles/10910.html 当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到 ...

  2. 亿级流量架构之分布式事务思路及方法

    分布式事务以及分布式锁是分布式中难点,分布式事务一篇文章可能写不完,我的习惯时从基本概念出发,一步一步开始介绍,前面会先梳理事务中一些基本概念,对基本概念十分清楚的话可以直接看"一致性讨论& ...

  3. 基于mysql和php的分布式事务处理1,基于MySQL和PHP的分布式事务处理

    PHP(超级文本预处理语言)是一种基于服务器端.执行效率高且易于开发的HTML内嵌式语言,是用户生成动态网页的工具之一[1].MySQL是全球最受欢迎的小型开放源码的关系型数据库管理系统,其体积小.速 ...

  4. 互联网环境下分布式事务处理系统现状与趋势

    互联网环境下分布式事务处理系统现状与趋势 马鹏玮, 魏凯, 姜春宇 中国信息通信研究院云计算与大数据研究所,北京 100191 摘要:传统集中式数据处理系统由于摩尔定律的逐渐失效,开始显露出性能瓶颈, ...

  5. 太极分布式事务处理框架TJDTP使用指南

    太极分布式事务处理框架TJDTP使用指南 李万鸿2017-2-20 结合目前事务处理的精华,我开发了太极分布式事务处理框架TJDTP,采用可靠消息服务和重试.补偿处理机制,使用事件驱动.最终一致的事务 ...

  6. 分布式事务处理技术之LCN

    分布式事务LCN 第一章 分布式事务介绍 一.什么是分布式事务 二.XA 的两阶段提交方案 三.TCC 解决方案 四.分布式事务中间件解决方案 第二章 LCN分布式事务处理框架介绍 一.什么是LCN ...

  7. ORA-02409 超时 分布式事务处理等待锁定ORA-02063

    ORA-02409:超时:分布式事务处理等待锁定ORA-02063 一.错误现象与环境     前端应用程序运行时出现下面的错误提示:          事件添加失败:ORA-02409;超时:分布式 ...

  8. ORA-02409:超时:分布式事务处理等待锁定ORA-02063

    ORA-02409:超时:分布式事务处理等待锁定ORA-02063 一.错误现象与环境     前端应用程序运行时出现下面的错误提示:          事件添加失败:ORA-02409;超时:分布式 ...

  9. 分布式事务处理技术之LCN原理

    分布式事务LCN 第一章 分布式事务介绍 一.什么是分布式事务 二.XA 的两阶段提交方案 三.TCC 解决方案 四.分布式事务中间件解决方案 第二章 LCN分布式事务处理框架介绍 一.什么是LCN ...

最新文章

  1. TDD 与 CI 在 Python 中的实践
  2. Mac OS X上的Java Memcached
  3. VSCODE远程连接服务器,远程开发。
  4. UDLD是一个Cisco私有的二层协议
  5. 远程控制软件 mRemoteNG,管理多台虚拟机
  6. Android 实现 欢迎界面 自动跳转 到 主界面
  7. 新中大计算机知识,新中大财务软件操作步骤
  8. win10定时关机c语言,win10 定时关机命令怎么设置_win10怎么设置定时关机指令-win7之家...
  9. windows 控制台cmd乱码的解决办法 chcp 65001
  10. 微信支付-简易实例代码
  11. sir模型初始值_SIR模型简单了解(Susceptible Infected Recovered Model)
  12. [渝粤教育] 西南科技大学 外国文学 在线考试复习资料
  13. jQuery ajax 文件下载
  14. 外地人如何买房落户武汉 武汉户口全解读
  15. 品牌对比|斯凯奇 VS 李宁
  16. 常见问题汇总:FLUENT文件导出为CAS或MSH
  17. 梦想世界2014年5月29日服务器维护公告,2021年4月30日游戏更新公告
  18. 移动用户和运营商的签约速率
  19. ActivePerl
  20. css利用什么xhtml标记构建网页布局,css是利用什么XHTML标记构建网页布局

热门文章

  1. 简明机器学习教程——实践篇(一):从感知机入手
  2. Serializable java序列化
  3. Java程序员从笨鸟到菜鸟之(三十)javascript弹出框、事件、对象化编程
  4. 【图像算法】图像特征:GLCM灰度共生矩阵纹理特征
  5. 编程之美-从无头单链表中删除节点方法整理
  6. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.1.Linux是什么)
  7. VUE搭建手机商城心得
  8. Spring MVC 4.1 支持jsonp
  9. 修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全
  10. windows server2008R2故障转移群集