乐观锁全量库存与增量库存
SQL
version` int(16) DEFAULT '0' COMMENT '乐观锁',
全量库存(Full Inventory)
定义: 全量库存通常指的是对整个库存数据进行完整的更新或同步。在全量库存处理中,系统会将整个库存数据重新计算、更新或加载,以确保库存记录的准确性和一致性。
应用场景: 通常在周期性的库存盘点、系统初始化、数据迁移等场景下使用。全量库存处理可以确保系统中的库存信息是最新的,但它可能对性能有一定的影响,特别是在库存数据量很大的情况下。
<update id="updateFullInventory">
update product
<set>
<if test="version != null">
`version` = `version` + 1,
</if>
<if test="stock != null">
`stock` = #{stock},
</if>
update_time = now()
</set>
where product_id = #{productId} and version = #{version}
</update>
增量库存(Incremental Inventory)
定义: 增量库存是指只处理库存变动部分的更新。系统仅关注库存中发生了变化的商品,而不是对整个库存数据进行重新加载。这可以减少处理时间和系统资源的开销。
应用场景: 常用于日常库存管理、订单处理、库存调整等场景。通过关注变动部分,增量库存处理可以更高效地维护库存信息。实时性可能更高,但在某些情况下可能需要考虑数据同步的一致性。
<update id="updateDecrementInventory">
update product
<set>
<if test="version != null">
`version` = `version` + 1,
</if>
<if test="stock != null">
`stock` = `stock` + #{stock},
</if>
update_time = now()
</set>
where product_id = #{productId} AND (stock + #{stock}) >= 0;
</update>
这里扣减库存用 -负数即可