【发布时间】:2011-11-16 17:32:41
【问题描述】:
假设我有一个 Games 表、一个 Players 表和一个 Users 表。
- 每个游戏都有很多玩家
- 每个玩家都有一个状态,例如“死亡”或“活着”。所以玩家不是用户。
- 每个玩家都有一个用户
到目前为止,结构看起来还不错。但是我想知道,如果一天可能有数千场比赛(这种比赛的持续时间很短),并且每场比赛有 10 或 20 名玩家。我可能会在更少的时间内在 Players 表中获得数百万行超过一年。而且即使在比赛结束后,我也需要将每个球员都保存在桌子上,因为我希望能够重玩任何比赛。我很担心那个时候的性能,选择和更新会越来越慢,对吧?
有什么想法吗?
【问题讨论】:
-
没有人(从字面上看,没有人)可以设计出不受某些性能问题影响的应用程序。甚至 twitter 和 facebook 开发团队(你知道 - 他们知道他们的工作非常好)也会遇到性能问题。所以我建议你从一些常见的模式开始,只要检测到真正的瓶颈,就可以改进它。
-
是的,但我更喜欢按设计做事。例如,如果我的计算告诉我每天将有 100 万行新行,我将不得不在开始之前停下来重新考虑整个事情,而不是等待它成为一个“真正的瓶颈”一周稍后。
-
@rwilliams 那篇文章告诉我要避免在大表上进行连接。关于如何在学说 2 中做到这一点的任何想法?引用时会自动填充相关实体
-
@HappyDeveloper:仅适用于 3 个表架构 - 适当的索引足以优化。
标签: php mysql database-design doctrine-orm erd