多个应用程序之间的数据库

时间:2016-01-29 14:47:28

标签: c++ sql-server performance transactions

我有一个游戏服务器,它使用SQL数据库来存储/检索玩家数据。游戏服务器具有待处理数据库请求/查询的队列,以避免阻止网络线程轮询。如果玩家玩的太多,数据库会受到压力并开始减慢查询速度。

如果我有多个服务器正在运行,我担心一个玩家可以断开连接,并且在其信息保存到数据库之前,同一个玩家连接到另一个游戏服务器(多个房间)并获取旧信息(使他成为在比赛中失去进步)。

我想知道是否有办法在多个应用程序实例(游戏服务器)之间管理这种类型的同步。

我考虑过事务,但是如果队列没有足够快地出队(在服务器内存上挂起查询 - 而不是在数据库服务器上),那仍然会导致问题。

制作一个"数据库服务器"其中所有游戏服务器连接并请求数据库操作(从而避免多个队列)不是选项

假设数据库已经过完美优化,并且必须在应用程序本身上进行解决方案。

我有什么选择?

1 个答案:

答案 0 :(得分:0)

当玩家连接时,创建一个"打开"记录在数据库中。当他断开连接时,创建一个"关闭"记录。

当玩家重新连接时,不要允许新的"打开"记录要创建,直到所有现有"打开"记录匹配"关闭"记录。