簡體   English   中英

如何在MySQL數據庫上以高查詢率優化Java程序

[英]How to optimize Java program with high rate of queries on MySQL Database

我目前正在開發用於教育目的的游戲。

游戲是一個小型聊天,每個玩家都有一個人物。 該角色的位置已寫入MySQL數據庫,並且每次玩家移動其角色時都會更新。

當前,游戲每60幀更新一次所有玩家位置,並在gameclient中更改它們。 數據庫的性能不是我唯一關心的問題,因為這會使游戲幀率下降到30-50 fps左右。

顯然,這會為每個玩家生成1個位置更新查詢(游戲以60fps運行)。 作為用戶,我的想法比我和幾個朋友要大,我可以想象這可能是個問題。

標准租用的網絡服務器可以處理此問題嗎? 我該如何改善? (它不能少於每秒更新一次位置)

我希望你有一些想法:-)

每次更改后,此類數據實際上並沒有真正保存到數據庫中,而是保留在某種內存中上下文中,以便更快地進行訪問。 您存儲在數據庫中的事物發生變化的頻率較低,例如每分鍾一次。

您可能要做的是定期將當前的內存上下文快照到數據庫。 也就是說,每分鍾左右,您將“保持”游戲狀態,以便在引擎崩潰時可以從該點恢復。 如果創建適當的體系結構,這將比定期調用方法困難。

某些事情可能會立即保留下來,以避免人們利用發生的動作與該動作的記錄永久之間的時間差。 例如,任何具有游戲內貨幣的交易都將立即被記錄下來,並且內存緩存將不被信任。

對於數量不多的玩家(例如不到100名),使用商品VPS應該沒有問題。 要接待更多的玩家,您必須非常小心才能提高效率。

您可以使用內存Java數據庫,該數據庫使您可以更頻繁地更新播放器。 然后將更改以較低的頻率存儲在MySQL數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM