乐趣区

关于数据库:ShardingSphere-4x-分布式事务之支持功能

导览

本大节次要介绍 ShardingSphere 分布式事务的次要性能

  • 本地事务
  • 两阶段 XA 事务
  • Seata 柔性事务

本地事务

  • 性能
  • 反对状况

性能

  • 齐全反对非跨库事务,例如:仅分表,或分库然而路由的后果在单库中。
  • 齐全反对因逻辑异样导致的跨库事务。例如:同一事务中,跨两个库更新。更新结束后,抛出空指针,则两个库的内容都能回滚。
  • 不反对因网络、硬件异样导致的跨库事务。例如:同一事务中,跨两个库更新,更新结束后、未提交之前,第一个库宕机,则只有第二个库数据提交。

反对状况

  • Sharding-JDBC 和 Sharding-Proxy 原生反对本地事务

两阶段事务 -XA

  • 性能
  • 不反对项

性能

  • 反对数据分片后的跨库 XA 事务
  • 两阶段提交保障操作的原子性和数据的强一致性
  • 服务宕机重启后,提交 / 回滚中的事务可主动复原
  • SPI 机制整合支流的 XA 事务管理器,默认 Atomikos,能够抉择应用 Narayana 和 Bitronix
  • 同时反对 XA 和非 XA 的连接池
  • 提供 spring-boot 和 namespace 的接入端

不反对项

  • 服务宕机后,在其它机器上复原提交 / 回滚中的数据

柔性事务 -SAGA

  • 性能
  • 不反对项
  • 反对状况

性能

  • 齐全反对跨库事务
  • 反对失败 SQL 重试及最大致力送达
  • 反对反向 SQL、主动生成更新快照以及主动弥补
  • 默认应用关系型数据库进行快照及事务日志的长久化,反对应用 SPI 的形式加载其余类型的长久化

不反对项

  • 暂不反对资源隔离
  • 暂不反对服务宕机后,主动复原提交中的 commit 和 rollback

反对状况

ShardingSphere 的柔性事务已通过第三方 SPI 实现 Saga 事务,Saga 引擎应用 Servicecomb-Saga。

留神

  • 反向 SQL 须要 主键 ,请确保在表构造中定义 主键
  • 对于 INSERT 语句,须要在 SQL 中显示插入 主键值,如 INSERT INTO ${table_name} (id, value, …) VALUES (11111, ”, ….) (其中 id 为表主键)。
  • 若须要主动生成主键,可应用 ShardingSphere 的分布式主键。

柔性事务 -SEATA

  • 性能
  • 依赖
  • 待优化项

性能

  • 齐全反对跨库分布式事务
  • 反对 RC 隔离级别
  • 通过 undo 快照进行事务回滚
  • 反对服务宕机后的,主动复原提交中的事务

依赖

  • 须要额定部署 Seata-server 服务进行分支事务的协调

待优化项

  • ShardingSphere 和 Seata 会对 SQL 进行反复解析
退出移动版