关于在业务中 MYSQL 事务查询的一个疑惑

18次阅读

共计 322 个字符,预计需要花费 1 分钟才能阅读完成。

我有一个疑问,在实际业务中,当我们使用 MySQL 进行查询时,某一瞬间得到的值在下一瞬间可能会发生变化。这是否意味着在某一瞬间拿到的值不够可靠?

举个例子,在仓库库存管理中,如果在查询时库存是 30,但在查询完成后,其他业务操作改变了库存,导致库存变为 25。然而,业务处理时依旧基于查询时的库存 30 进行操作,这样就会导致记录流水的值出现误差。

目前我能想到的解决办法是:

使用乐观锁,通过在记录中添加版本号或时间戳字段,在更新数据时进行校验,确保数据的一致性。
使用悲观锁,在查询时锁定数据行,直到事务结束,防止其他事务修改数据。
除此之外,还有其他方式可以解决这个问题吗?例如,在确保数据一致性和处理准确性的前提下,有没有更高效或更适合实际业务场景的方法?

正文完
 0