php - 如果同时向数据库发出多个请求,会发生什么情况?
问题描述
我目前正在开发一个应用程序,其中有一部分用户为图像投票并显示消息“您是第 N 个投票者”。假设 1000 甚至 100 名用户在 2-3 秒内为特定图像投票。我将如何确保这些用户中的每一个都显示正确的 N 值,并且 N 在数据库中正确递增?
我正在使用 MySQL 和 PHP。
解决方案
通常,关系数据库实现 ACID 属性(在Wikipedia或其他来源中阅读更多关于它们的信息)。
这些保证事务不会相互干扰并且数据库保持一致。所以,如果一堆用户在同一时间投票并且一堆查询查询,那么每个查询将与运行时的数据视图保持一致。当然,结果可能会随着时间而改变。
我也应该添加这个。ACID 属性的实施增加了数据库的开销。并非所有数据库都始终 100% 兼容 ACID,因此这也取决于您的数据库设置(以及存储引擎上的 MySQL)。但是,一般来说,如果代码编写正确,您不必担心数据库中的“正确增量”。
推荐阅读
- json - 存在用于验证列表之一中的至少一个元素的 Jsonschema
- python - 有没有办法生成 Matplotlib 动画帧以响应事件?
- angular - 我可以在 Angular SPA 中导航到任意 html 而不创建组件吗?
- java - Spring Boot Callable - 401 Unauthorized: [no body]
- git - Azure Databricks - 从笔记本克隆 git 存储库
- python - 蚂蚁广告 discord.py
- json - 在出现的情况下打印(并排除)两个模式之间的模式
- python - 通过时间查找每个项目和 ID 的平均值(Python)
- javascript - 无法使用 Sharepoint 2016 中的 REST API 更新列表中的列表项
- c# - C# OpenXML 使 Excel 文件可下载