2011-06-16 73 views
3

我读过Oracle 11g has a results cache feature,我真的可以从中受益。但是,我的客户有Oracle 10g。是否有任何明智的方法来模拟PHP/5.2支持的Web应用程序,该应用程序通过ODBC(使用Oracle的驱动程序,而不是Microsoft的)连接到远程Oracle 10g服务器。Oracle 10g的结果缓存

的想法是缓存大表通常返回小数据集,并确保高速缓存的数据被丢弃的复杂查询时,对基础表的变化(它不需要是立竿见影,一个小时的延迟是可以接受的) 。

我可以在网络服务器(不是Oracle服务器)上安装新软件,如果有必要,我可能会切换到OCI8。

回答

1

memcached是一个选项。

但由于10g支持在2011年7月31日结束,您的客户端需要升级到11g,因此他们可能会延长支持到2013年7月31日。 (此信息可能已更改)

+0

您能否详细说明您的答案?我了解存储功能,但memcache可以帮助检测或跟踪过时的数据? – 2011-06-17 08:23:35

+0

与结果缓存不一样。在11g中也有CQN,因此您可以更新缓存http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_cqn.htm – oluies 2011-06-17 17:47:28

3

您可以使用stale tolerated查看数据库中的物化视图。

+0

我不知道那个开关,我会明确地阅读它。过去,我使用物化视图作为某些数字的缓存(例如,每个商店的总销售额和从个别调用中计算的月份),但作为全局缓存解决方案,它并不像我想要的那样通用。我无法事先知道确切的查询,因为涉及很多过滤器。 – 2011-06-17 08:30:57

0

您可以使用11gR2的内存数据库缓存选项。它也适用于10.2.0.4。这是从TimesTen获取中分离出来的,您可以使用它在应用程序服务器上定义写入缓存。这允许非常快速的回报。它非常好地扩展,将应用程序服务器与缓存网格服务器结合在一起。在你的情况下,如果要扫描的数据集很大,可以使用mviews。如果它很复杂,缓存将正常工作,即使对于不断修改的表。

+0

你是什么意思?正如所料,RESULT_CACHE提示对10g没有明显影响: – 2011-06-17 11:10:58

+0

IMDB缓存选项允许您将表缓存到更接近应用程序的位置,使得可以非常快速地访问数据。由于结果缓存为11g或更高,因此结果缓存完全不起作用,IMDB缓存可以从10.2.0.4开始使用,但工作方式不同。 (并且是一个单独的许可选项) – 2011-06-17 19:24:39