一些供应商告诉我们,我们不应该在我们的数据库和他们的数据库之间使用数据库链接,因为通过数据库链接执行的查询不会被缓存,也不会被优化。
我找不到任何确认/证实这一点的信息。
天真地,我不明白为什么 Oracle 在使用数据库链接时无法进行查询缓存。
一些供应商告诉我们,我们不应该在我们的数据库和他们的数据库之间使用数据库链接,因为通过数据库链接执行的查询不会被缓存,也不会被优化。
我找不到任何确认/证实这一点的信息。
天真地,我不明白为什么 Oracle 在使用数据库链接时无法进行查询缓存。
数据库链接有一些限制。例如,您不能远程执行 DDL。
针对远程表运行的查询的处理方式与常规表的处理方式不同:
在大多数情况下,中断过程就足够了,您只会获得数据库链接的预期开销(数据库之间的网络延迟,两个查询分析/处理而不是一个,等等)。远程子查询将被远程数据库视为普通查询,并且数据将像普通查询一样进入远程缓存。
如果您尝试将本地表连接到远程表(或来自两个不同数据库链接的表),则可能会遇到性能问题,因为必须将数据传送到单个数据库才能执行连接。在这种情况下,您可能想要更改分解过程(例如,在远程数据库而不是本地数据库中执行复杂连接)。
该文档详细介绍了您可以调整分布式查询的多种方法。
分布式查询不能像本地表一样优化,但是分布式查询是优化和缓存的,因此供应商是不正确的。
您可以通过运行以下内容来查看这一点。您将看到每次运行时执行计数都会增加。
我的猜测是,供应商希望通过 Web 服务访问他们的数据,并且与您自己数据库中的数据的任何连接都在应用程序层中完成。即使没有缓存,这种配置的性能也可能大大低于通过数据库链接进行连接。