共享SQL语句:为了避免重复解析相同的SQL语句(解析操作消耗资源,影响性能),Oracle在第一次解析SQL语句后,会将该SQL语句及其对应的执行计划存放在内存中。这些信息被存放在系统全局区域SGA(System Global Area)中的共享池(Shared Pool)。
当你执行一个SQL语句(有时称为一个游标)时,如果该语句与先前执行的某条SQL语句完全相同,且该语句的执行计划仍在内存中存在,Oracle将直接使用内存中的执行计划,而无需重新解析。此机制大幅提高了SQL的执行性能,并节省了内存使用。
性能优化的关键是尽可能将执行过的语句保留在内存中,这就要求有较大的共享池(可以通过设置shared_pool_size
来调整),同时要尽可能使用绑定变量执行SQL,以增加缓存的命中率。