我们现在正在开发一个在线系统,我对何时使用内存中搜索以及何时使用数据库搜索感到困惑。有人可以帮我找出搜索记录时要考虑的因素吗?
答案 0 :(得分:4)
一个因素是,如果您需要反复查看相同的结果,请确保将它们缓存在内存中。当您使用支持延迟执行的linq-to-sql或Entity Framework-ORM时,这将成为一个问题。
因此,如果您需要多次执行IQueryable<SomeType>
,请确保在启动多个foreach循环之前使用ToList()
实现它。
答案 1 :(得分:2)
这取决于记录的数量。如果记录的数量很小,那么最好将其保存在内存中,即缓存记录。此外,如果经常查询记录,则转到内存选项。
但是如果记录号或记录大小太大,那么最好选择数据库搜索选项。
基本上,这取决于您的服务器上有多少内存......
答案 2 :(得分:2)
这取决于具体情况,但我通常更喜欢内存搜索。
然而,取决于上下文,例如,如果记录可以在一个搜索和另一个搜索之间更新,并且您在搜索时需要最新的记录,显然您需要数据库搜索。
如果您需要存储在内存中的记录集(数据表)的大小很大,可能最好直接在数据库上进行另一次搜索。
但请注意,如果可以,如果性能很重要,将数据加载到数据表并进行搜索,则使用LINQ进行过滤可以提高搜索本身的性能。
要记住的另一件事是数据库服务器的性能和应用服务器的性能:如果数据库服务器在搜索查询上足够快,也许你不需要在应用程序的内存中缓存,所以你可以避免一步到位。请记住,内存搜索中的缓存会将计算请求从数据库移动到应用程序服务器...
您的问题无法获得绝对回复,它与您的背景相关......