查询太多了?游戏服务器

时间:2016-06-05 10:19:04

标签: mysql

我正在编写一个游戏服务器(一个特定的SAMP游戏服务器)并且我正在寻找改变玩家的方式'数据已保存。

目前,数据从MySQL加载到服务器中的变量中。例如,玩家的钱被加载到每个玩家变量中,称为" Money" (看起来有点像:DATA [playerid] [Money])。

如果玩家杀死了另一个玩家,他们的变量DATA [playerid] [Kills]会增加。然后,每隔几分钟,当玩家与服务器断开连接(即他们关闭游戏,游戏崩溃等)时,MySQL更新查询就会运行,只是将变量中的所有内容存储到"玩家"数据库中的表。

然而,如果服务器崩溃,数据可能会丢失,即使它只有几分钟的价值(玩家可以在几分钟内赚到相当数量的钱),所以我在思考更改它以便不是递增变量,而只是递增数据库中的特定字段。例如,如果玩家获得100美元,则更新查询只会在数据库的行中的货币字段中添加100。

显然,这意味着如果很多玩家都在战斗,那么就会有大量的杀戮,死亡,金钱和得分,这意味着很多查询都会被发送到MySQL服务器。这会导致问题,例如减慢任何速度或造成崩溃吗?是否值得确保没有数据丢失?我从某人那里听说Twitter曾经向一个MySQL服务器发送了数千个查询。

我还记录聊天消息,因此每次玩家发送聊天消息时,都会发送一个查询。如果说每秒有2-3条消息会导致问题吗?

1 个答案:

答案 0 :(得分:0)

我认为您可能需要介于两个步骤之间:Play->部分保存 - >批量保存在DB中。
也许这对你的应用程序来说有点过分,但你是否考虑过"记录"您通过数据经纪人like Kafka获得的部分信息?如果你有一个生产者(写入数据),kafka服务器将自动告诉消费者(读取数据)崩溃之前的位置。
Or Redis,正如评论中所建议的那样,虽然它可能更具有过度杀伤力。