0

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

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

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

有什么想法吗?

4

2 回答 2

2

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

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

于 2011-09-14T06:45:06.450 回答
1

是的,经过很长时间,性能方面会出现一些问题,但是对这些表字段进行适当的索引会使您更容易。

跟踪表上所有即将发生的选择和更新查询并进行适当的索引。

你可以参考MySQL 如何使用索引解释输出格式

您还可以考虑一些逻辑,将一些游戏或记录在一段时间(如 1 个月或 2 个月)后归档到具有相同结构的另一个表中。

于 2011-09-14T07:44:54.760 回答