【发布时间】:2015-06-18 23:20:08
【问题描述】:
我目前正忙于用 C# 进行实验,以便可以根据自己的喜好构建 Web 服务器。 Web 服务器将专为我也在从事的项目而设计。希望它能比其他网络服务器运行得更好。
现在我一直在尝试做的是找到一种将数据库信息存储在应用程序内存中的有效方法。
到目前为止,我已经尝试创建一个类似于带有字段的表的类。为表中的每一行创建该类的新实例。然后创建类似于索引的某些 Dictionary 变量。就像一个用于 ID,一个用于用户名。它正在工作,但与数据库中的表相比,它消耗了大约 3 倍的内存。我所做的示例:
class User()
{
public int Id;
public string Name;
//other columns, the same way
}
至于字典:
Dictionary<int, User> UserIDIndex = new Dictionary<int, User>();
User NewUser = new User();
NewUser.Name = "Something...";
UserIDIndex.Add(someId, NewUser);
我也尝试过 DataTable,但根本没有成功。它消耗的内存至少比类和字典方法多 50%。
我很好奇是否还有其他方式,一种更有效的信息存储方式?
这一切背后的原因:每秒需要更新和选择大量数据。恐怕直接从数据库中做太多了。所以起初(启动和某些条件)想在内存中加载一些东西。然后,在某些时候,更新内存中的值。然后一次这么多秒,更新数据库中的这些值。我想这也可以用 NodeJS 完成,但它使用 1 个核心,我觉得这有点难过。如果您遇到 CPU 问题,这并不是真正的未来证明。
【问题讨论】:
-
我正在构建一个实时应用程序,在线的用户越多,需要完成的连接/查询就越多。每个用户每秒执行 2-4 个操作,它可以远远超过 200 个。在这种情况下,我确实相信需要一些缓存。我会看看你推荐的软件。
-
与stackoverflow的数据库访问相比,我认为数据库内的查询无法处理如此大的请求量。就算是死锁了,修复一下还是不错的blog.codinghorror.com/deadlocked
-
预期音量是多少?
标签: c# caching memory-management architecture