14.分库分表(二)-Sharding-JDBC对分布式事务的支持

1.本地事务(弱事务):

功能

  • 完全支持非跨库事务,例如:仅分表,或分库但是路由的结果在单库中。

  • 完全支持因逻辑异常导致的跨库事务。例如:同一事务中,跨两个库更新。更新完毕后,抛出空指针,则两个库的内容都能回滚。

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

支持情况

  • Sharding-JDBC可以支持由用户自行配置不使用XA数据源

  • Sharding-Proxy无需支持,使用XA或柔性事务即可

 

2.两阶段事务(XA事务)

功能

  • 完全支持跨库事务。

  • 默认使用Atomikos,支持使用SPI的方式加载其他XA事务管理器。

支持情况

  • Sharding-JDBC可以支持由用户自行配置XA数据源

  • Sharding-Proxy支持

 

3.柔性事务

功能

  • 完全支持跨库事务。
  • 支持失败SQL重试及最大努力送达。
  • 支持反向SQL、自动生成更新快照以及自动补偿。
  • 默认使用关系型数据库进行快照及事务日志的持久化,支持使用SPI的方式加载其他类型的持久化。
  • 暂不支持资源隔离。

支持情况

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

 

你可能感兴趣的:(《高性能MySQL》)