2016-11-29 58 views
0

我和我的同事正处于一个耗时的项目中。我们发现了一个现有的代码,我们正在讨论有关缓存,数据库和网络流量的性能。性能高速缓存vs数据库vs网络流量

这不是一个专门从缓存与数据库加载的问题,因为答案显而易见,缓存是唯一的答案。

我说的是Sql Server 2008中的一个表值函数,它总共从2个表中返回3000行和12个非索引列。

这两个表中的一个已经在缓存中。无论如何,我们需要通过数据库来检索未缓存的表中的数据。

是否更好地迭代所有从数据库返回的数据并映射我们的对象(在这种情况下,我们不需要加载缓存数据,因为所有数据都是从数据库返回的),或者最好只返回来自缓存对象数据库的ID(以减少网络流量)并在3000次迭代期间从缓存中加载信息?

在此先感谢。

回答

0

决定并坚持一个决定或基准这两个解决方案。

0

如果我正确理解你的问题,你问你是否应该在迭代通过记录(加载或以其他方式)时动态加载表2的数据?如果这就是你所问的问题,我认为答案很可能就是网络延迟而言,它会明显变慢。对数据库的每次调用都可能会在数据库服务器的往返时间中产生大量成本。很大程度上取决于潜伏期是什么...