(10)SQL语句硬解析&软解析
视频链接:
https://www.bilibili.com/video/BV1Zt411w7eQ?p=12
SQL语句的执行分为3个阶段:解析(Parse)、执行(Execute)、获取数据(Fetch)
1、shared pool的组成
3块区域:free、library cache、 row cache
- free:空闲空间
- library cache(库缓存):缓存sql语句及执行计划
- row cache(数据字典缓存):
--查看shared pool中这3块空间的大小
select * from v$sgastat a where a.NAME = 'library cache’;
select * from v$sgastat a where a.pool = 'shared popl’and a.NAME = 'free memory';
select * from v$sgastat a where a.NAME = 'row cache';
数据字典(存放数据库自身的信息)
2、硬解析(hard parse)、软解析(soft parse)
其实还有一种解析:软软解析/不解析
硬解析步骤、软解析步骤
- 一条sql 进来后,如果在library cache中没有缓存,就需要硬解析,如果由缓存,则只需要软解析。
硬解析
1)检查语法是否正确
2)检查所访问的对象是否存在
3)检查用户权限
4)生成执行计划(找最优)(最消耗资源的一步>70%)
软解析
1)检查语法是否正确
2)检查所访问的对象是否存在
3)检查用户权限
对sql语句进行解析时,需要频繁访问数据字典信息,所以oracle将数据字典缓存放在shared pool中。
软硬解析的具体情况
select name, value from v$sysstat where name like 'parse%'
数据库自启动后的解析数据统计。
上一篇:Oracle学习笔记–系列一(9)
下一篇:Oracle学习笔记–系列一(11)