【问题标题】:How to handle a database which is constantly updated from a game如何处理从游戏中不断更新的数据库
【发布时间】:2015-05-28 19:22:15
【问题描述】:

我正在开发一款将数据存储在数据库中以供多人游戏的游戏。要存储的数据的简化版本如下所示: 玩家 A 前往地图上的国家 X,这样做会随着时间的推移失去影响力。

这很简单,因为本地游戏可以在后台进行更新,然后在玩家停止影响时将更新发送到数据库。

在以下情况下会出现并发症: 玩家 B 在玩家 A 之后前往国家 X。要检查国家 X 的当前影响力,需要发生以下两件事之一:A) 数据库中的影响力字段会随着时间的推移自行更新,或者 B) 游戏每隔一段时间就会不断更新数据库。玩家 A 的游戏更新时的几秒钟。

A) 听起来是更好的选择,但我实际上不知道这是否可能(是吗?)以及对于许多国家/地区的数据库会有多大的压力?

对不起,如果这听起来含糊不清,但它似乎是一个相当普遍适用的场景,而不仅仅是游戏。如果您需要任何说明,请询问。

【问题讨论】:

    标签: mysql database unity3d


    【解决方案1】:

    很简单,您可以使用 Sql Job 从数据库中执行此操作

    1. 创建一个基于某些字段计算影响力的SP,并将其更新到某个列中。

    2. 在作业中调用此 SP,将其安排为每 5 分钟或您想要的任何时间运行一次。

    【讨论】:

    • 对不起,我标记错了。我正在使用 mysql,而您共享的链接似乎正在使用 mssql。
    • @dudledok 答案的本质可能仍然适用。看起来 MqSql 有一个Event scheduler,您可以将其用于相当于jobsAny answer that gets the asker going in the right direction is helpful
    • 听起来很完美。看来我的虚拟主机不支持它,这是一种耻辱。我想我可以将上次更新时间存储为表中的一列并手动进行。
    猜你喜欢
    • 2011-11-16
    • 2019-05-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多