MMO服务器-优化用户状态数据的数据库访问

本文关键字:数据 数据库 访问 状态 用户 服务器 优化 MMO | 更新日期: 2023-09-27 18:05:39

我正在使用以下技术和语言编写一个MMO服务器:. net Framework 4, c#, SQL Server 2008 R2,实体数据模型,LINQ.

我的问题是关于如何以及何时访问用户状态数据的永久存储(SQL Server)以提高服务器性能。

过去,当用户登录到MMO服务器时,您将把所有用户数据加载到RAM中,以便在用户连接的生命周期内快速读写访问。当用户从服务器注销时,该数据将被持久化到数据库中。

随着实体数据模型的出现,以及与之相关的缓存,这种方法还需要吗?什么时候Context.SaveChanges();如果是这样,他会打电话吗?

对于我的问题,任何指导都将是感激的。谢谢。

更多信息:我认为没有人在解决。net实体模型的缓存功能。据我所知,. net实体数据库模型为您做缓存,因此查询并不总是针对实际数据库运行,而是针对RAM中的数据运行。因此,从我的角度来看,我不必区分RAM数据访问和数据库访问。这是一个正确的假设吗?

MMO服务器-优化用户状态数据的数据库访问

我不是专家,但我会说坚持你的原始设计。您最终可能会占用更多的内存,试图保持上下文打开,并让它在用户连接的整个生命周期中跟踪所有更改。我建议使用POCO,在用户登录时加载对象,关闭上下文,然后当用户注销时,打开一个新的上下文,将您的对象附加回去,然后保存更改。

如果您需要性能,那么您可能希望使用带有memcached的服务器池。

一旦用户连接,您将在缓存中加载关于他的所有信息,让守护进程定期将其刷新到数据库中,并更新memcache中的数据。

数据在RAM中总是比在DB中有更好的性能。