概念分析:共享 SQL 语句
为了避免重复解析相同的 SQL 语句(解析操作非常消耗资源,会影响系统性能),在首次解析之后,ORACLE 会将 SQL 语句及其解析生成的执行计划存放在内存中。这块位于系统全局区域 SGA(System Global Area)的共享池(Shared Buffer Pool)的内存区域可以被所有数据库用户共享。
因此,当你执行一个 SQL 语句(有时被称为一个游标)时,如果该语句与之前执行过的某条语句完全一致,且其执行计划仍在内存中,那么 ORACLE 无需再次解析,可直接获取该语句的执行路径。这项功能显著提升了 SQL 执行效率并大幅降低了内存消耗。
要实现这一功能的关键在于尽可能将已执行的语句保存在内存中,因此需要配置足够大的共享池(通过设置 Shared Buffer Pool 参数)并尽量使用绑定变量来执行 SQL 语句。