gpt4 book ai didi

mysql - 使用 MySQL 防止电子商务应用程序的竞争条件

转载 作者:行者123 更新时间:2023-11-29 03:13:05 25 4
gpt4 key购买 nike

我正在使用 MySQL 构建一个电子商务应用程序,但我很难想出一个解决方案来防止以下竞争条件:

两个用户同时结账,他们的购物车中有相同的商品。商店只有一件商品可供出售。一位用户应该能够购买最后一件商品,而另一位用户应该会看到一条错误消息,因为该商品缺货。

我正在使用元素计数器来跟踪库存中的元素数量,因此我想我会在处理完用户的信用卡后减少元素数量。

我知道 MySQL 中的 SELECT...UPDATE 查询,但我想远离锁定行或表 - 除非这真的是电子商务应用程序解决此问题的最佳方式问题。

除了检查/递减项目计数器之外,我还想听听其他解决方案。

最佳答案

为什么要担心锁定。它不会伤害你,直到你同时拥有 100 个并发客户并且像 innodb 这样的数据库引擎被用来处理这些事情。您将无法摆脱某种原子性和解决方法。

您需要保持应用程序级别的事务管理。

   checkout 
reserver_the_items_in_cart
if(reservation_succesfull){
get_the_payments_done_via_payment_gatway
if(payment_successful) {
update_the_reserverd_to to sold_status
}else{
make_reserved_item_to_available.
}
}else{
show_error_that_item_not_available.
}

处理此问题的其他最佳方法是永远不要让“show_error_that_item_not_available”发生。在库存开始用完时及时补充库存。

关于mysql - 使用 MySQL 防止电子商务应用程序的竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com