首页 > 解决方案 > 如果同时向数据库发出多个请求,会发生什么情况?

问题描述

我目前正在开发一个应用程序,其中有一部分用户为图像投票并显示消息“您是第 N 个投票者”。假设 1000 甚至 100 名用户在 2-3 秒内为特定图像投票。我将如何确保这些用户中的每一个都显示正确的 N 值,并且 N 在数据库中正确递增?

我正在使用 MySQL 和 PHP。

标签: phpmysqldatabase

解决方案


通常,关系数据库实现 ACID 属性(在Wikipedia或其他来源中阅读更多关于它们的信息)。

这些保证事务不会相互干扰并且数据库保持一致。所以,如果一堆用户在同一时间投票并且一堆查询查询,那么每个查询将与运行时的数据视图保持一致。当然,结果可能会随着时间而改变。

我也应该添加这个。ACID 属性的实施增加了数据库的开销。并非所有数据库都始终 100% 兼容 ACID,因此这也取决于您的数据库设置(以及存储引擎上的 MySQL)。但是,一般来说,如果代码编写正确,您不必担心数据库中的“正确增量”。


推荐阅读