oracle共享池(shared pool):一、工作原理、组成部分 二、软硬解析过程

文章目录

  • oracle整体结构图
  • [共享池(shared pool)](#共享池(shared pool))
    • [shared pool的作用](#shared pool的作用)
    • [shared pool的组成](#shared pool的组成)
    • [查询 shared pool 各组成部分大小](#查询 shared pool 各组成部分大小)
    • 硬解析和软解析

oracle整体结构图

共享池(shared pool)

shared pool的作用

1、 将 sql 语句解析成执行计划

2、 对执行计划进行执行,读取数据

3、 将读取到的数据返回给客户端

解析====》执行===》返回,此处涉及到"解析",下文将详细分析和总结,

shared pool的组成

① free 空间

② 库缓存,用于缓存 SQL 语句和执行计划,比如最近执行过的sql语句、pl/sql过程和包

③ 字典缓存,存储数据库自己本身的信息,包括数据字典,比如:表的定义,口令,表的结构,用户名,权限等信息,尽可能多的熟悉数据字典,才能更好的掌握oracle,相关free、libaray cache、shared pool等相关大小情况都可以在v$sgastat (内存字典)中进行查看,方便数据库监控、管理以及后期通过修改参数来改变大小空间

查询 shared pool 各组成部分大小

1、select * from v$sgastat a where a.name= ' library cache ' ;查看库缓存大小信息

2、select * from v$sgastat a where a.pool ='shared pool' and a.name='free memory';查看共享大小和空闲大小信息

3、select * from v$sgastat a where a.name='row cache';查看字典缓存大小

硬解析和软解析

在 shard pool 中,前台进程会将 SQL 语句解析成执行计划,这部分中解析方式有两种:硬解析和软解析。

1、oracle执行sql的步骤过程:

1.1、语法检查(syntax check)

检查此sql的拼写是否语法。
1.2、语义检查(semantic check)

诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。

1.3、对sql语句进行解析(prase)

利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。
1.4、执行sql,返回结果(execute and return)

根据sql处理过程确定,软硬解析发生再1.3步骤过程中,

硬解析过程:

复制代码
1.语法、语义及权限检查;

2.查询转换(通过应用各种不同的转换技巧,会生成语义上等同的新的SQL语句,如count(1)会转为count(*));

3.根据统计信息生成执行计划(执行计划由很多种,但是一定选择成本最低,消耗资源最少,最优的方案执行计划);

4.将游标信息(执行计划)保存到库缓存。

软解析过程:

复制代码
1.语法、语义及权限检查;

2.将整条SQL 直接在库缓存中执行计划

1、硬解析( hard parse ) : 当一条 SQL 语句进入共享池后,没有解析成执行计划的缓存,就需要进行硬解析---消耗资源大,成本高,速度慢

2、软解析( soft parse ) : 当一条 SQL 语句进入共享池后,共享池中有执行计划的缓存,就进行软解析---shared pool中获取缓存的sql,如果没有的情况下则会发生硬解析过程,

查看解析的相关信息,

1、cpu解析时间

2、执行计划解析时间

3、解析总数=硬解析总数+软解析总数,可以得到软解析总数,

4、硬解析总数

5、解析失败总数

相关推荐
小猿姐1 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
NocoBase3 小时前
10 个开源工具,快速构建数据应用
数据库·低代码·开源
麻辣清汤3 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi
Kan先生5 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python
超级迅猛龙5 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc
杨过过儿5 小时前
【Task02】:四步构建简单rag(第一章3节)
android·java·数据库
····懂···6 小时前
攻克PostgreSQL专家认证
数据库·postgresql
每天都在想吃啥6 小时前
day31 SQLITE
数据库·sqlite
m0_748254099 小时前
2025最新华为云国际版注册图文流程-不用绑定海外信用卡注册
服务器·数据库·华为云
大新屋9 小时前
MongoDB 分片集群修改管理员密码
数据库·mongodb