我有一個在線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