在.Net中缓存大量数据可以接受吗

本文关键字:数据 Net 缓存 | 更新日期: 2023-09-27 18:24:59

我正在SQL Server中设计一个包含400多个表的会计应用程序。

这些表中大约10%是运算表,其他表用于解码和参考信息。

例如,Invoice表(主表和明细表)使用大约10个表来解码买家、商品、营销人员等信息。

我想知道在asp.net缓存中缓存解码表而不从SQL Server查询它们是否可以接受(我知道对缓存项的更改也应该在SQL Server上提交)。使用缓存项进行解码?

我认为它比常规应用程序快得多。

也许所有这些表(缓存表)在几年后加在一起大约是500 MB,因为它们不经常更改。

在.Net中缓存大量数据可以接受吗

如果您有RAM,那么可以使用500 MB。

但是,除非您现在有性能问题,否则缓存只会导致问题。不要解决你没有遇到的问题,只在你有问题的时候进行性能设计和优化,因为否则优化会导致更多的问题。

因此,我建议,通常最好确保您的查询得到优化和良好的结构,表上有正确的索引,并且您发出的查询数量最少。

尽管500MB并不是需要缓存的大量数据,但恕我直言,只要您正确使用,SQL Server通常会在缓存方面做得更好。

使用缓存总是可以提高性能;以更高的实现复杂性为代价。

对于从不更改的静态数据,缓存是有用的;但它仍然需要在线程之间加载和共享,这本身就可能带来挑战。

对于很少更改的数据,它变得更加复杂,因为它本可以更改。如果单个应用程序(进程)是缓存的唯一更新程序,那么这并没有那么困难,但仍然不是一项简单的任务。


我花了几个月的时间优化离线批处理系统(代码可以在12小时内完全控制数据库)。优化的一部分是使用各种缓存和数据重投影。所有缓存都是只读的。执行期间内存使用量约为10gb,数据库约为170gb,有6000万条记录。

即使使用了缓存,也对底层模式进行了相当大的更改,以提高效率。只读缓存用于消除处理过程中的读取;以允许多线程处理并提高插入件性能。

处理速度已从20个月前的每秒6件增加到(昨天)的每秒6000件左右,但随着同期处理的项目数量从10万件增加到800万件,确实需要进行这种优化。

如果你没有需求,就不要优化。