我正在设计一个在Server中有400多个表的会计应用程序。
这些表中约有10%是操作表,其他表用于解码和引用信息。
例如,Invoice表(主表和详细信息)使用大约10个表来解码诸如买方、商品、营销人员和.等信息。
我想知道在asp.net缓存中缓存解码表是否可以接受,而不是从Server查询它们(我知道对缓存项的更改也应该提交到Server上)。并使用缓存项进行解码?
我认为它比常规应用要快得多。
也许几年后它们(缓存表)加在一起大约是500 MB,因为它们不经常更改。
发布于 2015-11-29 07:37:39
如果您有RAM,那么使用500 MB就可以了。
但是,除非现在出现性能问题,否则缓存只会导致问题。不要修复您没有遇到的问题,设计是为了性能,并且只有在遇到问题时才进行优化--因为否则优化会导致更多的问题得到解决。
因此,我建议您通常最好确保查询是优化的,结构良好,表上有正确的索引,并且发出最少数量的查询。
尽管500 it不是很多需要缓存的数据,但恕我直言,通常SQL Server在缓存方面做得比您能做得更好--前提是您正确地使用它。
使用缓存总是会提高性能,而代价是更高的实现复杂性。
对于从不更改的静态数据,缓存是有用的;但是它仍然需要在线程之间加载和共享,这本身就可能带来挑战。
对于很少改变的数据,它变得更加复杂,仅仅是因为它可能已经改变了。如果单个应用程序(进程)是缓存的唯一更新程序,那么它就不那么困难了,但仍然不是一个简单的任务。
我花了几个月的时间来优化一个离线批处理系统(在这里,代码在12个小时内完全控制了数据库)。优化的一部分是使用各种缓存和数据重新预测。所有的缓存都是只读的。在执行过程中,内存使用量在10 is左右,数据库在170 is左右,记录为6000万条。
即使使用缓存,也对底层模式进行了相当大的更改,以提高效率。只读缓存是为了消除处理过程中的读取;允许多线程处理并提高插入性能。
处理速度已从20个月前每秒处理的6项下降到每秒大约6 000项(昨天),但确实需要进行这种优化,因为要处理的项目数量在同一时期从10万项增加到800万项。
如果你没有必要,那就不要优化。
https://stackoverflow.com/questions/33980239
复制相似问题