2014-11-08 62 views
0

我想知道什么是减少对数据库的昂贵查询的好方法。例如使用大量记录,关节和计算的查询。在一个单独的数据库表中存储临时结果

所以我想我会每20分钟执行一次这些昂贵的查询一次(或如此),并给用户存储结果从一个特殊的表中存储这些昂贵的查询结果。这是否是一种好方法,或者你会选择一种用于存储数据库结果的平面文件缓存系统吗?我读过普通文件系统比较慢。

如果有人能够启发我这个问题,我会非常感激。

+1

你可以有一个memcache服务器,所以加载一次必要的查询,将结果追加到memcache服务器,并根据需要检索/ nuke ..这需要一个专业的网络托管计划或虚拟服务器,虽然 – 2014-11-08 14:13:27

+0

Ha Thx Daryl,恐怕我不能依靠memcache。它恐怕是一个共享主机。 :(对于这种情况的任何想法? – rinserepeat 2014-11-08 14:17:12

回答

1

您需要缓存数据,它只是一个地方的问题,并且也将基于数据集的大小。

Memcache as Daryl声明是一个非常好的解决方案。取决于在后端访问这些数据和框架的内容,它可以存储在基于应用程序的缓存中,每隔x分钟只发出一次查询,同时使用缓存结果。

如果你想走直sql路线,你会采用数据仓库的概念。
您将创建用于报告而不是基于事务的处理的拼合模式。 您将减少连接的数量并将数据非规范化到某种程度,以便查询将快得多......但它将是特定时期的陈旧数据。

您可以设置服务/计划任务/数据库计划任务来发出查询,清除现有的拼合表,并用新结果重新填充它。

+0

感谢Keith!我想我会选择数据库路由。使用denormalize你几乎可以创建一个临时excelsheet,其中包含所有需要的数据,并留下设置数据库的最佳实践吗? – rinserepeat 2014-11-08 19:13:53

+1

你可以把它想象成一个excel表格,但是非常依赖于这个场景,你可以优化你的数据仓库以便读取访问,以用于报表和分析,而不是专注于消除冗余。关于进一步的研究,你可以看看OLTP (交易)vs OLAP(仓库)。一个很好的例子在这里http://www.sql-server-performance.com/2013/from-oltp-to-olap/ – Keith 2014-11-09 12:47:20

+0

超级感谢队友!!真的很感激它 – rinserepeat 2014-11-09 13:18:21

相关问题