MySQL:如何在多只读架构中保证完整性

标签 mysql database database-design scaling high-load

场景描述起来很简单,但答案可能很复杂:

想象一下您有一个只写 mysql 数据库的情况。然后你有大约 5 或 6 个只读数据库。写数据库有一个特定库存的计数。您有成千上万的用户在使用这个特定的库存项目,但数量有限。为了论证,假设 10 个项目。

确保仅售出 10 件商品的最佳方法是什么?如果只读从属更新时间之间甚至有 200 毫秒的增量,计数的完整性是否会过时,从而出售您没有的库存?

您将如何解决/扩展这个问题?

最佳答案

并发用户的基本解决方案可能也会涵盖这一点。在“购买”交易的某个时刻,您需要减少库存(在写入服务器上)。通过任何方法,强制库存不能低于零。

如果只剩下一件商品,并且有两个人试图购买它,那么其中一个就会倒霉。

复制延迟完全一样。两个用户看到一个产品可用,但当他们试图购买时,它已经不见了。该场景的一个很好的解决方案包括复制延迟和用户简单地从另一个用户那里抢走最后一个项目。

关于MySQL:如何在多只读架构中保证完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112866/

相关文章:

sql - 具有外键的 Sybase 约束和针对外部表列值的条件检查

android - 如何在 Android 中立即从服务器获取新数据?

sql-server - SQL 搜索的关键字

database-design - 面向对象的数据库与对象的关系数据库

django - Postgres int数组与中间表来保存访问控制列表的用户ID

php - 如何在 SQL 表中显示上次事件的在线/离线状态

mysql - 选择具有特定行号值的行

php - 使用 PHP PDO 查询选择 2 列

c# - 如何使用键将 DataTextField 绑定(bind)到字典值

database - 身份验证数据库字段