我有一个在线iphone turnbased游戏,有很多游戏在同一时间运行。我正在优化代码,因为我和服务器今天都崩溃了。1.3M查询/小时。你将如何构建查询?
这是设置:
现在我有一个表,“匹配”(70场每一行数据的结构。),即跟踪所有的活动比赛。每7秒钟,iphone将连接,下载他/她所在的“匹配”表中的所有匹配项,并更新iphone中的UI。
这工作很好,直到大约1000人下载游戏并播放。服务器崩溃。
因此,为了优化,我想我可以创建一个名为“matches_needs_update”的新表。这张桌子有两排;名称和ID。 “id”与“matches”表中的匹配相同。当比赛更新时,它被放在这张桌子上。
现在,而是通过整个“匹配”表搜索,查询只检查,如果玩家有需要更新的任何比赛,然后从“匹配”表中获取这些比赛。
我的问题是双重的:
- 这是最佳的解决方案?
如果一个玩家在10个比赛中活跃,是否有一种很好的方法可以同时从“比赛”表中获得这10个比赛,或者我需要一个for循环做10个查询,每个匹配:
“SELECT * FROM matches WHERE id =?”
在此先感谢
虽然问题严重,但如果您仔细考虑,这是您遇到的最佳问题之一。来自太多实际用户的崩溃是最好的一种崩溃。 – Cyclone 2012-04-26 19:57:24
使用推送通知的解决方案可能是解决性能问题的更好方法。这样你就不会有很多冗余的转弯检查 – 2012-04-26 19:57:38
它几乎听起来像1人可以在多场比赛中活跃,并且多人可以在1场比赛中活跃?当然,你必须有3桌? – DanRedux 2012-04-26 20:08:16