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、解析失败总数

相关推荐
CT随17 分钟前
Redis 存在线程安全问题吗?为什么?
数据库·redis·安全
TravisBytes19 分钟前
Redis如何解决热Key问题
数据库·redis·缓存
宽带你的世界23 分钟前
TiDB 是一个分布式 NewSQL 数据库
数据库·分布式·tidb
隔壁老王15630 分钟前
tidb实时同步到mysql
数据库·mysql·tidb
2501_9032386536 分钟前
深入理解 JUnit 的 @RunWith 注解与自定义 Runner
数据库·junit·sqlserver·个人开发
小光学长1 小时前
基于flask+vue框架的的医院预约挂号系统i1616(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
听封1 小时前
✨ 索引有哪些缺点以及具体有哪些索引类型
数据库·mysql
利瑞华1 小时前
数据库索引:缺点与类型全解析
数据库·oracle
V+zmm101341 小时前
自驾游拼团小程序的设计与实现(ssm论文源码调试讲解)
java·数据库·微信小程序·小程序·毕业设计
ChinaRainbowSea1 小时前
1. Linux下 MySQL 的详细安装与使用
linux·数据库·sql·mysql·adb