mycat 事务测试
场景:3个分片dn1、dn2、dn3,表student(id,name),将dn3的表name字段长度小于其他两个分片,通过字段超长模拟部分分片成功,部分分片失败。
测试不完全,只测试了执行阶段,commit 阶段 仍在更新。。。谨慎参考
1. 保持autoCommit=true
结果:dn1、dn2修改成功,dn3失败,抛出字段超长异常
2. Set autoCommit=false
结果:dn1、dn2、dn3都未修改,抛出字段超长异常
3. 保持autoCommit=true,但多条sql,先正常,后违反超长约束
结果:dn1、dn2两句sql都修改成功,dn3的第一句修改成功,第二句失败,抛出字段超长异常
4. Set autoCommit=false,但多条sql,先正常,后违反超长约束
结果:所有分片都未修改成功,抛出字段超长异常
结论:mycat事务已经能够保证数据一致性了
目前mycat1.3.2支持 只支持单库事务,也就是在事务的执行阶段可以保证但是可以报错回滚,但是如果一旦应用commit,mycat发出commit到各个分片后,就无法保证,
所有节点的最终事务一致, 这个必须要在强一致性与性能之间做权衡,后续mycat 将会支持XA 事务。