Php 每小时130万次查询。您将如何构造查询?
我有一个基于iphone的在线游戏,很多游戏同时运行。我正在优化代码,因为我和服务器今天都崩溃了 以下是设置: 现在我有一个表“matches”(每行70个数据字段,结构),它跟踪所有活动的匹配。每7秒,iphone就会连接,下载“matches”表中他/她活动的所有匹配项,并更新iphone中的UI 直到大约有1000人下载了游戏并开始玩,这一切都非常有效。服务器崩溃了 为了优化,我想我可以创建一个名为“matches\u needs\u update”的新表。此表有2行;名称和id。“id”与“matches”表中的匹配项相同。当一个匹配项被更新时,它被放入这个表中 现在,为了搜索整个“matches”表,查询只需检查玩家是否有需要更新的匹配项,然后从“matches”表中获取这些匹配项 我的问题有两个:Php 每小时130万次查询。您将如何构造查询?,php,iphone,mysql,phpmyadmin,Php,Iphone,Mysql,Phpmyadmin,我有一个基于iphone的在线游戏,很多游戏同时运行。我正在优化代码,因为我和服务器今天都崩溃了 以下是设置: 现在我有一个表“matches”(每行70个数据字段,结构),它跟踪所有活动的匹配。每7秒,iphone就会连接,下载“matches”表中他/她活动的所有匹配项,并更新iphone中的UI 直到大约有1000人下载了游戏并开始玩,这一切都非常有效。服务器崩溃了 为了优化,我想我可以创建一个名为“matches\u needs\u update”的新表。此表有2行;名称和id。“id”
提前感谢您需要离开数据库。看看memcache或redis。我建议… …当您使用PHP时,我假设您是从一个mysql数据库执行此操作的 它很容易安装,从PHP6开始将是默认的
将此1表保留在内存中,它将运行。您的数据库看起来非常小。一个包含70行的表应该在毫秒内返回,甚至每秒数百个查询都应该可以正常工作 一些传统的指针
- 请确保您共享您的连接。当客户需要数据时,您不必进行连接
- 确保“用户在匹配中”上有索引,以便从索引中获取结果
- 我确信您有足够的内存将整个结构保存在缓存中,并且对于这些小表,不需要额外的配置
- 确保您的模式已规范化。每个用户一个表。每场比赛一个。一个匹配中的每个用户一个
如果有6000个活动游戏和3000000个非活动游戏,那么对这些表进行分区是非常有益的。虽然问题很严重,但仔细想想,这是您可能遇到的最好的问题之一。来自太多实际用户的崩溃是最好的崩溃方式。使用推送通知的解决方案可能是解决性能问题的更好方法。这样你就不会有太多多余的回合检查。听起来好像一个人可以在多场比赛中活跃,而多个人可以在一场比赛中活跃?当然你必须有3个表?内存缓存是这里的解决方案。是的,每场比赛有2-6名玩家,每个玩家一次最多可以运行30个活动游戏。谢谢回复。我需要更新所有的php代码来处理它,还是只是为了安装?感谢SAPC是两件事。它是一个操作码缓存(缓存PHP代码以便更快地加载)和一个内存存储(即键值)。第一部分自动进行,并提高速度。但你对第二点感兴趣。因此,是的-您确实需要更新您的代码。阅读我链接的手册页面,从apc_商店开始了解这个想法。