php - MySQL如何处理大表? (游戏的数据库设计)

标签 php mysql database-design doctrine-orm erd

假设我有一个 Games 表、一个 Players 表和一个 Users 表。

  • 每个游戏都有很多玩家
  • 每个玩家都有一个状态,例如“死亡”或“活着”。所以玩家不是用户。
  • 每个玩家都有一个用户

到目前为止,结构看起来不错。但我想知道,是否每天可能有数千场比赛(这种比赛持续时间很短),并且每个比赛有 10 或 20 名玩家。我可能会在更少的时间内在 Players 表中得到数百万行一年多。即使游戏结束后,我也需要将每个玩家都存储在表中,因为我希望能够重玩任何游戏。我担心那时的性能,选择和更新会变得越来越慢,对吗?

有什么想法吗?

最佳答案

本质上这是一个可扩展性的问题。由于可扩展性是几乎所有流行网站、游戏等都会遇到的问题,因此有一系列解决方案。首先,只要合理的数据库设计和索引的使用,现代数据库就可以很好地处理数百万行数据。如果您的游戏如此受欢迎,以至于数据量超出了现代数据库的处理能力,并且您的企业有一些商业模式,那么您可能会赚到足够的钱来聘请一流的专家来帮助您解决这个问题。

如果您刚刚开始实现游戏,我建议您将数据库和查询的微调留到以后,因为性能瓶颈可能会出现在与您预期不同的地方。不要过早优化:)

关于php - MySQL如何处理大表? (游戏的数据库设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7411834/

相关文章:

php - 如何在 php 的 SoapClient 中设置和禁用 header ?

javascript - 在另一个页面中包含 canvasJS 图表

mysql - 抓取超过特定时间戳值的行

java - 在 000webhost 连接 mysql 时出现异常

postgresql - 使用多个模式或按 customerId 表列实现 Multi-Tenancy 数据结构

mysql - 使用 sqlalchemy 测量 mysql-server 上的插入时间和查询时间

php - 从匹配值的逗号分隔的 mysql 行返回所有结果

javascript - 尝试使用表单登录时 PHP 重定向到错误的 URL

mysql - 在哪种情况下,将ID字段添加到多对多表可能是个好主意?

php - 设置和配置 MySQL 数据库以存储有关十亿个唯一 URL 的信息