Oracle的执行计划缓存是否与连接绑定,或者它是用于所有连接的全局映射?
问题描述:
我的Java应用程序激发来自JDBC连接conn1的查询,oracle将该查询的执行计划存储在其缓存中。如果从不同的JDBC连接conn2触发相同的查询,Oracle是否会重复使用旧查询中的缓存执行计划?Oracle的执行计划缓存是否与连接绑定,或者它是用于所有连接的全局映射?
换句话说,Oracle的执行计划缓存是全局还是每个连接创建?
答
它是整个实例。如果您使用集群(RAC),那么如果您的连接是到另一个实例,那么它不会从第一个实例“看到”缓存的执行计划。
我正在讨论执行计划,其中以PreparedStatements为例说明了重复使用 –
http://docs.oracle.com/database/121/CNCPT/memory.htm#GUID-DE757E9C-3437-408A-8598-3EB4C8E2A3B0 –
谢谢!这给出了很好的详细解释! –