Oracle学习笔记--系列一(10)

(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)

おすすめ

転載: blog.csdn.net/Ruishine/article/details/120747385