shared pool

shared pool分为三个部分:free、library cache、row cache

shared pool的作用是缓存sql语句以及sql语句所对应的执行计划。在library cache中。

一条sql语句的执行分为三个阶段:解析、执行、获取数据

解析:把sql语句解析成执行计划

sql的解析分为两种:硬解析、软解析

当客户端将sql传入服务器进程,服务器进程查看shared pool中的library cache查找是否有这一条sql语句以及对应的执行计划,如果没有将发生硬解析,反之,发生软解析。

硬解析的大致过程为:判断sql语句语法是否有错,判断指定对象是否存在,判断权限是否满足;如果都没有问题,从n种执行方案中选出最优的一种

软解析大致过程:判断权限是否满足;没有从n中执行方案中选出最优的一种这一步骤,这一步骤最消耗资源。

因为oracle在执行sql时需要频繁访问数据字典信息,所以Oracle将数据字典信息放入shared pool中。

 

查看library cache的大小:

select * from v$sgastat a where a.NAME='library cache';

查看解析情况:

select * from v$sysstat where name like 'parse%';

 

你可能感兴趣的:(Oracle)