从数据库或内存查询?哪个更快?

时间:2012-02-14 12:43:36

标签: c# performance windows-services singleton file-processing

我正在尝试提高用C#和.NET 2.0开发的Windows服务的性能,该服务处理大量文件。我想每秒处理更多文件。

在其过程中,对于每个文件,服务执行数据库查询以检索系统的某些参数。

这些参数每年都会发生变化,我认为如果将这些参数作为单例加载并定期刷新此单例,我会获得一些性能。我没有为每个正在处理的文件进行数据库查询,而是从内存中获取参数。

完成方案:我使用的是Windows Server 2008 R2 64位,SQL Server 2008是已经提到的数据库,C#和.NET 2.0。

我的方法是对的吗?你会怎么做?

谢谢!

3 个答案:

答案 0 :(得分:3)

  

这些参数会一直改变

是的,请将它们缓存在内存中。特别是如果它们很大或很复杂。

您应该注意在一年中的正确时间使它们无效,具体取决于准确程度。

简单地将它们缓存一小时甚至几分钟可能是一个很好的妥协。

答案 1 :(得分:1)

越过网络或进入磁盘总是比内存访问慢几个数量级。

数据库可以将数据缓存在内存中,因此如果您可以实现这一目标并且您没有通过网络,那么数据库可能会更快,因为他们的数据访问模式/索引等...可能会更快比你的代码。但是,这是最好的情况 - 如果你需要它更快,在内存缓存帮助。

但是,请注意,在内存缓存中可能会增加复杂性和错误。您必须确定缓存数据的生命周期,如何刷新以及它越复杂,您将拥有的边缘案例状态错误就越多。即使它们每年都在变化,你也必须处理这个风口浪尖。

答案 2 :(得分:1)

RAM内存数据访问肯定更快任何其他数据访问,除了注册表和CPU缓存之类的cpu内存

即使您每分钟更改一次,链接也会更快,所以是的,缓存该查询的速度非常快