0

我们的情况有点不典型,我猜...

我们有一个经常从多个应用程序调用的存储过程。由于这是一个繁重的过程,要连接多个大表,我们决定对其结果进行缓存。因此,现在该过程首先检查是否有缓存结果 - 如果有,则返回它,如果没有,则计算它(大 SELECT,许多 JOIN)并放入缓存表以供进一步使用。缓存行在源表的触发器中被标记为“待刷新”(因此,如果源数据发生变化,我们会使与该数据连接的缓存失效)。

引入缓存后,服务器机器上的 CPU 使用率明显下降,但数据库增长迅速。缓存表非常大,占数据库空间的 1/3。有一个想法将它们放入单独的数据库中(主要是为了避免备份它们)。但是我担心性能,使用来自其他数据库的数据不会显着降低查询速度吗?

4

2 回答 2

0

你可以在你的数据库之外建立你的缓存吗?如果可以,那将释放 1/3 的数据库空间。Memcache 或 ehcache 可能会有所帮助。

于 2013-02-13T19:54:35.777 回答
0

为什么你把缓存的数据保存这么久?如果一个多月前的缓存数据很少使用,您可以将其删除。然后不会备份它,只有在再次需要时才需要重新计算。

这当然只有在旧的缓存数据基本上不再使用时才有效。

于 2013-02-11T13:02:44.280 回答