mycat分布式mysql中间件(事务测试)

mycat 事务测试


场景:3个分片dn1dn2dn3,表student(id,name),将dn3的表name字段长度小于其他两个分片,通过字段超长模拟部分分片成功,部分分片失败。

测试不完全,只测试了执行阶段,commit 阶段 仍在更新。。。谨慎参考

 

1.       保持autoCommit=true

结果:dn1dn2修改成功,dn3失败,抛出字段超长异常

 

2.       Set autoCommit=false

结果:dn1dn2dn3都未修改,抛出字段超长异常

 

3.       保持autoCommit=true,但多条sql,先正常,后违反超长约束

结果:dn1dn2两句sql都修改成功,dn3的第一句修改成功,第二句失败,抛出字段超长异常


 

4.       Set autoCommit=false,但多条sql,先正常,后违反超长约束

结果:所有分片都未修改成功,抛出字段超长异常

 

结论:mycat事务已经能够保证数据一致性了

 

目前mycat1.3.2支持 只支持单库事务,也就是在事务的执行阶段可以保证但是可以报错回滚,但是如果一旦应用commit,mycat发出commit到各个分片后,就无法保证,

所有节点的最终事务一致, 这个必须要在强一致性与性能之间做权衡,后续mycat 将会支持XA 事务。