提问者:小点点

如果同时对数据库有多个请求,会发生什么?


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

我正在使用MySQL和PHP。


共1个答案

匿名用户

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

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

我还应该补充这一点。 ACID属性的强制增加了数据库的开销。 并不是所有数据库都始终100%兼容ACID,因此这也取决于您的数据库设置(在存储引擎上使用MySQL的情况下)。 但是,一般来说,如果代码编写得当,您不必担心数据库中的东西会“正确地递增”。