1、事务的定义

事务式访问数据库的一个逻辑工作单位,它属于一个操作序列,执行这个操作序列使数据库从一种一致状态转换到另外一种一致状态,从而实现特定业务的功能。

2、分布式事务的定义

分布式事务属于传统事务的扩展,分布式事务继承了传统事务的定义,因为数据是分布的,一个事务的执行可能涉及多个节点的数据,

这使得分布式事务的执行方式与传统事务的执行方式不同。传统集中式事务只在一台计算机上执行,分布式事务一般会在多个节点上的多台计算机上执行。

子事务:分布式数据库管理系统的事务优化器实现把一个分布式事务转变为若干个与相应节点有关的操作序列组成,这些操作序列被叫做子事务。因此可以把分布式事务看作由多个不同站点上的子事务组成。

3、分布式事务的特征

3.1 事务的基本特征

原子性:事务的操作要么全部执行要么全部不执行。当事务非正常情况终止时,其中间结果将被取消。事务的原子性主要保证数据库的状态要么回退到执行之前的状态要么执行成功变成另一个一致的状态。

可串行性或一致性:并发执行的几个事务,其操作结果应与某种顺序串行执行这几个事务所得到的结果完全相同。由数据库系统的并发机制来保证并发事务执行时数据库状态的一致。

隔离性:一个没有执行完成的事务不能在其提交之前把自己的中间结果提供给其他事务使用。因为未提交的事务结果不是最终结果,有可能在后续的执行过程中取消,这样就会造成数据库不一致的状态。

持久性:当一个事务正常提交后,其操作结果将被永久固化下来。

原子性、可串行性、隔离性、持久性称为事务的四个基本特性,简写为ASID或ACID。属于传统集中式事务和分布式事务都具备的。

3.2 分布式事务和集中式数据库中的事务区别:

执行特性:由于分布式事务执行时被分解为多个子事务执行,因为子事务间的操作需要进行协调,因此每一个分布式事务必须创建一个协调进程,以协调各子事务的操作,协调数据及控制报文的收发,决定事务的提交和回退。

集中式事务的执行由并行调度算法调度,不会产生一个控制过程,也不必分解为子事务。

操作特性:在分布式事务中除了应用对数据的存取操作序列之外,还需要加入大量的通信原语,负责协调进程和代理进程之间的数据传送、代理进程之间的数据传送。另外为了协调子事务的执行还需要加入大量的控制原语。因此分布式事务比集中式事务的组成要复杂的多,执行方式也是复杂的多。

控制报文:分布式数据库系统除了数据报文外,还需要控制报文,对各子事务的操作进行协调,这样就有了大量的控制报文在网络上传输。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

分布式数据库基础:分布式事务相关概念介绍相关推荐

  1. MySQL高级特性之分布式(XA)事务的介绍

    文章目录 分布式(XA) 事务 1.内部XA事务 2.外部XA事务 这一部分是 高性能MySQL(第3版)中第七章第11节内容:关于MySQL高级特性之分布式(XA)事务的介绍,(不感兴趣的可以忽略) ...

  2. 分布式数据库中间件的实现原理介绍三:读写分离

    声明:本文并非原创,转自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍. 数据库中对计算和缓存资源消耗较多的往往是密集或复杂的SQL查询.当系统资源被查询语句消耗,反过来会影响数据写入操作 ...

  3. 分布式数据库、分布式事务

    一:分布式数据库 分布式数据库和我们经常用的传统的关系型数据库有什么区别,比如oracle,mysql,sql server,首先看下定义: 分布式数据库定义:分布式数据库系统通常使用较小的计算机系统 ...

  4. 分布式数据库中间件的实现原理介绍一:分库分表【转】

    声明:本文并非原创,转自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍. 分片是解决数据库存储容量限制的直接途径.分片包括垂直分片与水平分片两种方式. 垂直分片 垂直分片又叫纵向分割,即以 ...

  5. 分布式数据库中间件的实现原理介绍四:平滑扩容

    声明:本文并非原创,转自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍. 随着业务增长,逻辑库存储空间不足,并发压力较大,此时可对DDM实例逻辑库进行平滑扩容,通过增加RDS实例来提高数据 ...

  6. php 分布式数据库查询,分布式数据库

    # 分布式数据库 ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`database.deploy` 为1 可以采用分布式数据库支持 ...

  7. php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云

    # 分布式数据库 ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`database.deploy` 为1 可以采用分布式数据库支持 ...

  8. mysql分布式数据库_分布式数据库搭建详细教程

    由于业务本身的需求,有时需要构建分布式数据库.一个具有较好设计的分布式数据库,对于用户(调用者)来说透明,跟使用本地数据库一样. 本文准备使用中间件的架构,实现分布式数据库的构建.简单点说,调用者与中 ...

  9. 分布式数据库和分布式缓存

    传统的: 微服务架构下需要分布式缓存 数据库被部署在多个服务器上(分布式数据库) 缓存也被部署在多个服务器上(分布式缓存)

最新文章

  1. 【QT】Qt正则表达式的使用:使用QRegExp来限制QLineEdit的输入格式
  2. 2021年全球十大工程成就,中国有几个? | 科技袁人
  3. TiDB 源码阅读系列文章(六)Select 语句概览
  4. 策略模式优化过多的IF ELSE
  5. 使用NLPIR 进行中文分词并标注词性
  6. 07.full text query_string查询
  7. 小cookie,大智慧
  8. 查看数据库大小或者表大小
  9. 基于SSM的企业人事管理系统(Spring+SpringMVC+Mybatis)
  10. 按键精灵写小脚本进行校园网自动验证
  11. max3490esa_MAX3096ESE+T_maxim芯片后缀tg16是什么意思
  12. ubuntu相关软件安装
  13. 标签添加图片Label
  14. 【Java并发编程】闭锁
  15. Navicat的安装及免费使用方式
  16. 基于JavaWeb实现的城市公交查询系统
  17. 教你怎么去辨别电脑配置的好或坏
  18. 【Unity2d】Sprite Renderer精灵渲染器
  19. ThinkPad T410加单条8G协德内存条成功
  20. 中小企业管理中存在的问题及对策

热门文章

  1. 使用NPOI和委托做EXCEL导出
  2. 打开mobilenet——ssd的demo.py显示这样的错误解决方法:Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.s
  3. 全球视频监控设备市场规模分析
  4. ARM Linux启动过程分析
  5. 学习笔记(19):Python网络编程并发编程-互斥锁
  6. C#中不常见的运算符功能汇总
  7. linux单线程处理多个请求,redis是单线程的,如何处理并发请求?
  8. mysql 用户 类别_从mysql里读取用户类型
  9. 用C语言用指针怎么算通用定积分,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...
  10. 斐波那契数列快速算法详解