Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理MySQL中的大表?(游戏的DB设计)_Php_Mysql_Database Design_Doctrine Orm_Erd - Fatal编程技术网

Php 如何处理MySQL中的大表?(游戏的DB设计)

Php 如何处理MySQL中的大表?(游戏的DB设计),php,mysql,database-design,doctrine-orm,erd,Php,Mysql,Database Design,Doctrine Orm,Erd,假设我有一个游戏表、一个玩家表和一个用户表 每场比赛都有许多运动员 每个玩家都有一个状态,比如“死”或“活”。所以玩家不是用户 每个玩家都有一个用户 到目前为止,结构看起来还不错。但我想知道,是否每天可能有数千场比赛(这种比赛持续时间很短),而且每场比赛都有10或20名玩家。。在不到一年的时间里,我可能会在玩家列表中出现数百万行。即使在游戏结束后,我也需要将每个玩家存储在表中,因为我希望能够重放任何游戏。我担心在那一点上的性能,选择和更新会变得越来越慢,对吗 有什么想法吗?本质上,这是一个可

假设我有一个游戏表、一个玩家表和一个用户表

  • 每场比赛都有许多运动员
  • 每个玩家都有一个状态,比如“死”或“活”。所以玩家不是用户
  • 每个玩家都有一个用户
到目前为止,结构看起来还不错。但我想知道,是否每天可能有数千场比赛(这种比赛持续时间很短),而且每场比赛都有10或20名玩家。。在不到一年的时间里,我可能会在玩家列表中出现数百万行。即使在游戏结束后,我也需要将每个玩家存储在表中,因为我希望能够重放任何游戏。我担心在那一点上的性能,选择和更新会变得越来越慢,对吗


有什么想法吗?

本质上,这是一个可伸缩性的问题。由于可伸缩性是几乎所有流行网站、游戏等都会遇到的问题,因此有一系列解决方案。首先,如果数据库设计合理并使用索引,现代数据库可以很好地处理数百万行数据。如果你的游戏如此受欢迎,以至于数据量的增长超出了现代数据库所能处理的范围,并且你的企业有了某种商业模式,那么你可能会获得足够的收入,聘请顶级专家来帮助你解决这个问题


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

本质上这是一个可伸缩性问题。由于可伸缩性是几乎所有流行网站、游戏等都会遇到的问题,因此有一系列解决方案。首先,如果数据库设计合理并使用索引,现代数据库可以很好地处理数百万行数据。如果你的游戏如此受欢迎,以至于数据量的增长超出了现代数据库所能处理的范围,并且你的企业有了某种商业模式,那么你可能会获得足够的收入,聘请顶级专家来帮助你解决这个问题


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

是的,经过很长时间之后,性能方面会出现一些问题,但是对这些表字段进行适当的索引将使您更加轻松

跟踪表上即将出现的所有select和update查询,并进行适当的索引

你可以参考和


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

是的,在很长时间后,性能方面会有一些问题,但对这些表字段进行适当的索引将使您更容易

跟踪表上即将出现的所有select和update查询,并进行适当的索引

你可以参考和


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

没有人(确切地说,没有人)能够设计出不受某些性能问题影响的应用程序。即使是twitter和facebook开发团队(你知道,他们的工作非常出色)也会遇到性能问题。所以我建议你们从一些常见的模式开始,并在发现真正的瓶颈时对其进行改进。是的,但我更喜欢通过设计来正确处理问题。例如,如果我的计算告诉我,我每天将有100万行新行,我将不得不停下来重新思考整个事情,甚至在开始之前,而不是等待它在一周后成为“真正的瓶颈”。@r那篇文章告诉我要避免在大表上连接。你知道在第二条原则中该怎么做吗?相关实体在以下情况下自动填充:referenced@HappyDeveloper:仅针对3个表,模式-适当的索引就足以进行优化。没有人(确切地说,没有人)能够设计出不受某些性能问题影响的应用程序。即使是twitter和facebook开发团队(你知道,他们的工作非常出色)也会遇到性能问题。所以我建议你们从一些常见的模式开始,并在发现真正的瓶颈时对其进行改进。是的,但我更喜欢通过设计来正确处理问题。例如,如果我的计算告诉我,我每天将有100万行新行,我将不得不停下来重新思考整个事情,甚至在开始之前,而不是等待它在一周后成为“真正的瓶颈”。@r那篇文章告诉我要避免在大表上连接。你知道在第二条原则中该怎么做吗?相关实体在以下情况下自动填充:referenced@HappyDeveloper:对于仅3个表,模式-适当的索引足够好的优化。谢谢,但正如我所说的,我不认为这是过早的优化。我只是不想开始构建一些设计上无法顺利运行的东西。谢谢,但正如我所说的,我不认为这是过早的优化。我只是不想开始构建一些设计上不可能顺利运行的东西。嘿,将旧游戏归档到一个单独的表中听起来是个好主意。这可能就是答案嘿,将旧游戏归档到一张单独的桌子上听起来是个好主意。这也许就是答案