复古 护眼 海天 深邃 暗黑 默认

使用限制

虽然 Apache ShardingSphere 希望能够完全兼容所有的分布式事务场景,并在性能上达到最优,但在 CAP 定理所指导下,分布式事务必然有所取舍。 Apache ShardingSphere 希望能够将分布式事务的选择权交给使用者,在不同的场景用使用最适合的分布式事务解决方案。

LOCAL 事务

支持项

  • 完全支持非跨库事务,例如:仅分表,或分库但是路由的结果在单库中;
  • 完全支持因逻辑异常导致的跨库事务。例如:同一事务中,跨两个库更新。更新完毕后,抛出空指针,则两个库的内容都能够回滚。

不支持项

  • 不支持因网络、硬件异常导致的跨库事务。例如:同一事务中,跨两个库更新,更新完毕后、未提交之前,第一个库宕机,则只有第二个库数据提交,且无法回滚。

XA 事务

支持项

  • 支持 Savepoint 嵌套事务;
  • PostgreSQL/OpenGauss 事务块内,SQL 执行出现异常,执行 Commit,事务自动回滚;
  • 支持数据分片后的跨库事务;
  • 两阶段提交保证操作的原子性和数据的强一致性;
  • 服务宕机重启后,提交/回滚中的事务可自动恢复;
  • 支持同时使用 XA 和非 XA 的连接池。

不支持项

  • 服务宕机后,在其它机器上恢复提交/回滚中的数据;
  • MySQL 事务块内,SQL 执行出现异常,执行 Commit,数据保持一致。

BASE 事务

支持项

  • 支持数据分片后的跨库事务;
  • 支持 RC 隔离级别;
  • 通过 undo 快照进行事务回滚;
  • 支持服务宕机后的,自动恢复提交中的事务。

不支持项

  • 不支持除 RC 之外的隔离级别。

待优化项

  • Apache ShardingSphere 和 SEATA 重复 SQL 解析。