我的情况有点不典型,我猜......
我们有一个从多个应用程序中经常调用的存储过程。由于这是一个繁重的程序,加入多个大表,我们决定为其结果制作缓存。所以现在程序首先检查是否存在缓存结果 - 如果是,则返回它,如果不是,则计算它(大SELECT,许多JOIN)并放入缓存表以供进一步使用。缓存行在源表的触发器中标记为“要刷新”(因此,如果源数据发生更改,我们将使用此数据连接的缓存无效)。
引入缓存后,服务器计算机上的CPU使用率明显下降,但数据库增长迅速。缓存表非常大,占用数据库空间的1/3。有一个想法将它们放入单独的数据库(主要是为了避免备份它们)。但是我担心性能,不会使用其他数据库的数据会显着降低查询的速度吗?
答案 0 :(得分:0)
为什么要保留缓存数据这么久?如果很少使用超过一个月前的缓存数据,您可以删除它。然后它不会备份,只有在需要时才需要重新计算。
如果旧的缓存数据基本上不再使用,那么这只会起作用。
答案 1 :(得分:0)
您可以在数据库外构建缓存吗?如果可以,那将释放1/3的数据库空间。 Memcache或ehcache可以提供帮助。