对更新单行记录的优化如何保证幂等?
https://github.com/alibaba/AliSQL/wiki/Changes-in-AliSQL-5.6.32-(2016-10-14) https://github.com/alibaba/AliSQL/wiki/AliSQL-Performance-benchmark-for-inventory https://github.com/alibaba/AliSQL/wiki/alisql_ic.lua
看到这里根据hint可以自动提交,但是如何保证幂等性,最简化的做法是根据订单查询流水,如果没有流水则INSERT订单,UPDATE库存,INSERT+UPDATE是在一个事务,订单通过唯一键约束,但是这里更新库存直接提交了,怎么确保是否应该提交,是否是订单重入的请求?
执行绑定参数变量 https://github.com/alibaba/AliSQL/blob/13502c1cde1b82104c2c59f9da6f0a7a460828f4/sql/sql_prepare.cc#L4062
执行UPDATE操作 #L3456 https://github.com/alibaba/AliSQL/blob/13502c1cde1b82104c2c59f9da6f0a7a460828f4/sql/sql_parse.cc#L3485
执行INSERT操作 #L3611 https://github.com/alibaba/AliSQL/blob/13502c1cde1b82104c2c59f9da6f0a7a460828f4/sql/sql_parse.cc#L3634
外层兜底 #L6616 https://github.com/alibaba/AliSQL/blob/13502c1cde1b82104c2c59f9da6f0a7a460828f4/sql/sql_parse.cc#L6619
从代码看,这个直接调用了commit/rollback,结束了事务,那么幂等流水是什么时间写的呢,INSERT幂等流水和UPDATE库存不在一个事务里,是如何保证幂等的呢?