返回顶部
首页 > 资讯 > 数据库 >如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析
  • 201
分享到

如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

2024-04-02 19:04:59 201人浏览 薄情痞子
摘要

如何进行oracle数据库硬解析、软解析、软软解析联系与区别的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Oracle数据库硬解析和

如何进行oracle数据库硬解析、软解析、软软解析联系与区别的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Oracle数据库硬解析和软解析有相同的一步,而软软解析与硬解析、软解析完全不一样。

一、sql解析

这里我们先简单sql语句执行步骤:

  • 语法检查(syntax check)

  • 语义检查(symantic check): 对象是否存在,是否有权限。

  • sql解析(parse): 利用内部算法对sql进行解析,生成解析树及执行计划。

  • 执行sql,返回结果(execute and return)

首先了解一下sql解析时用到的内存结构——shared pool。

shared pool是一块内存池,里边又被分成了很多小的区块,每个块有他们的作用:

  • free (空闲)

  • library cache (库缓存,缓存sql语句以及sql所对应的执行计划)

  • row cache  (字典缓存——库里有多少表,多少用户,多少个列,列的名字,列的数据类型,每个表多大等等都属于数据库自身信息。)

一个sql 语句,进入到数据库后,server process 会拿着sql语句到shared pool中的library cache  里边去找,看sql语句以前是否有执行过。也就是在library cache  里面看有没有这条sql语句以及sql语句所对应的执行计划。(此过程是通过对传递进来的SQL语句使用HASH函数运算得出HASH值,与共享池中现有语句的HASH值进行比较看是否一一对应。现有数据库中SQL语句的HASH值我们可以通过访问vsql、vsql、vsqlarea、v$sqltext等数据字典中的HASH_VALUE列查询得出。)

二、涉及解析的概念

1. 硬解析

硬解析(Hard Parse)是指Oracle在执行目标SQL时,在库缓存(Library  Cache)中找不到可以重用的解析树和执行计划,而不得不从头开始解析目标SQL并生成相应的父游标(Parent Cursor)和子游标(Child  Cursor)的过程。

硬解析实际上有两种类型:一种是在库缓存中找不到匹配的父游标(Parent  Cursor),此时Oracle会从头开始解析目标SQL,新生成一个父游标和一个子游标,并把它们挂在对应的HashBucket中;另外一种是找到了匹配的父游标但未找到匹配的子游标,此时Oracle也会从头开始解析该目标SQL,新生成一个子游标,并把这个子游标挂在对应的父游标下。

硬解析过程:

  • 语法、语义及权限检查;

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

  • 根据统计信息生成执行计划(找出成本最低的路径,这一步比较耗时);

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

2. 软解析

软解析(Soft Parse)是指Oracle在执行目标SQL时,在Library Cache中找到了匹配的父游标(Parent  Cursor)和子游标(Child Cursor),并将存储在子游标中的解析树和执行计划直接拿过来重用而无须从头开始解析的过程。

软解析过程:

  • 语法、语义及权限检查;

  • 将整条SQL hash后从库缓存中执行计划。

软解析对比硬解析省了三个步骤。

3. 软软解析

软软解析(Soft Soft  Parse)是指若参数SESSioN_CACHED_CURSORS的值大于0,并且该会话游标所对应的目标SQL解析和执行的次数超过3次,则此时该会话游标会被直接缓存在当前会话的PGA中的。若该SQL再次执行的时候,则只需要对其进行语法分析、权限对象分析之后就可以直接从当前会话的PGA中将之前缓存的匹配会话游标直接拿过来用就可以了,这就是软软解析。

软软解析过程:

要完全理解软软解析先要理解游标的概念,当执行SQL时,首先要打开游标,执行完成后,要关闭游标,游标可以理解为SQL语句的一个句柄。

在执行软软解析之前,首先要进行软解析,MOS上说执行3次的SQL语句会把游标缓存到PGA,这个游标一直开着,当再有相同的SQL执行时,则跳过解析的所有过程直接去取执行计划。

三、实验:

1. 环境准备:

drop table test purge; alter system flush shared_pool; create table test as select * from dba_objects where 1<>1; exec dbms_stats.gather_table_stats(ownname => 'sys',tabname => 'test');

如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

2. 硬解析

select * from test where object_id=20; select * from test where object_id=30; select * from test where object_id=40; select * from test where object_id=50;

如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

3. 软解析

var oid number; exec :oid:=20; select * from test where object_id=:oid; exec :oid:=30; select * from test where object_id=:oid; exec :oid:=40; select * from test where object_id=:oid; exec :oid:=50; select * from test where object_id=:oid;

如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

4. 软软解析

begin  for i in 1..4   loop  execute immediate 'select * from test where object_id=:i' using i;  end loop;  end; /

如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

5. 统计

select sql_text,s.PARSE_CALLS,loads,executions from v$sql s where sql_text like 'select * from test where object_id%' order by 1,2,3,4;

如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

可以看到软解析与软软解析相比,软软解析只是解析一次。

字段解释:

  • PARSE_CALLS 解析的次数

  • LOADS 硬解析的次数

  • EXECUTIONS 执行的次数

关于如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: 如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析

本文链接: https://lsjlt.com/news/67995.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析
    如何进行Oracle数据库硬解析、软解析、软软解析联系与区别的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Oracle数据库硬解析和...
    99+
    2024-04-02
  • 如何理解oracle硬解析、软解析、软软解析
    如何理解oracle硬解析、软解析、软软解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。硬解析和软解析有相同的一步,而软软解析与硬解析、...
    99+
    2024-04-02
  • 在oracle 10.2.0.5分析硬解析及软解析及软软解析获取shared pool latch机制系列五
    结论 1,测试环境是oracle 10.2.0.5 2,_kghdsidx_count=1,即共享池子池个数是1个 3,硬解析需要获取shared pool latch 4,软解析需要获取shared...
    99+
    2024-04-02
  • 如何进行VS2005软件的理解与分析
    如何进行VS2005软件的理解与分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。看来是WebDeployment本身有一定的bug,笔者猜想可能是编码问题造成的,WebDep...
    99+
    2023-06-17
  • 如何解析数据库压缩技术的分析
    今天就跟大家聊聊有关如何解析数据库压缩技术的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。作为数据库,在系统资源(CPU、内存、SSD、磁盘等)...
    99+
    2024-04-02
  • 如何分析C++数组和指针的区别与联系
    这期内容当中小编将会给大家带来有关如何分析C++数组和指针的区别与联系,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:一直以来,有很多地方在说到数组和指针时都会说数据就是指针,这种观点也被越来越多的人...
    99+
    2023-06-26
  • 详细解析MariaDB与MySQL两个数据库的区别
    主要区别介绍 ●  发行版:MariaDB 是 MySQL 的一个分支,MySQL是 Oracle 公司的产品。 ●  开发公司:MariaDB 由 MariaDB 基金会和社区维护,MySQL 由 Oracle 公司维护。 ●  开发重点...
    99+
    2023-09-05
    数据库 mysql mariadb
  • 如何进行NewSQL数据库TiDB的分析
    本篇文章给大家分享的是有关如何进行NewSQL数据库TiDB的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。下面要介绍的是数据库领域的后起...
    99+
    2024-04-02
  • 宜信开源|数据库审核软件Themis的规则解析与部署攻略
    一、介绍 Themis是宜信公司DBA团队开发的一款数据库审核产品,可帮助DBA、开发人员快速发现数据库质量问题,提升工作效率。其名称源自希腊神话中的正义与法律女神。项目取此名称,寓意此平台对数...
    99+
    2024-04-02
  • 阿里云实例与数据库实例区别解析
    在使用阿里云服务时,我们常常会涉及到实例和数据库实例的概念。本文将详细解析这两种实例的区别。 阿里云实例和数据库实例是阿里云提供的两种不同类型的服务。虽然它们在表面上看起来类似,但其实它们之间存在着许多重要的区别。阿里云实例:阿里云实例是阿...
    99+
    2023-11-06
    实例 阿里 区别
  • HS系列USB数据采集卡,及高速多通道数据分析软件详解
    HS3、HS4、HS5、HS6 USB数据采集卡不但能高速采集数据进行显示分析,还配有一套强大的分析软件包括(数字存储示波器,FFT频谱分析仪,任意波形发生器,瞬态\连续波形记录仪,数字多用表,I2C协议分析仪,CAN总线分析仪,串口分析仪...
    99+
    2023-06-05
  • Minitab Express for Mac(数据分析软件)附破解补丁 v1.5.0 支持M1
    Minitab Express是一款专为Mac用户设计的数据分析和统计软件。它提供了一套全面的工具和功能,用于分析数据、执行统计计算和生成可视化。 下载:Minitab Express for Mac(数据分析软件)附破解补丁 以下是 M...
    99+
    2023-10-20
    express 数据分析 数据挖掘
  • 如何进行域名的解析与绑定
    今天就跟大家聊聊有关如何进行域名的解析与绑定,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。那么有了注册了域名和购买了虚拟主机以后,怎么样才能在IE里输入你的域名就能打开你的站呢?这就...
    99+
    2023-06-08
  • 如何进行数据库的架构整体分析
    这期内容当中小编将会给大家带来有关如何进行数据库的架构整体分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  很少谈架构方面的事情,主要是因为这确实是个对知识面和知识深...
    99+
    2024-04-02
  • 如何进行数据库三大范式的分析
    这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一: 引言     &n...
    99+
    2024-04-02
  • 如何优化数据库的数据解析
    数据库的数据解析可以通过以下几种方法来优化: 使用合适的数据类型:选择适当的数据类型可以减少数据存储的空间,并提高数据解析的效率。例如,将整数存储为整型数据类型而不是字符型数据类型。 建立索引:在经常进行查询的列上建立索引可以加快数...
    99+
    2024-07-03
    数据库
  • web开发中如何解析坚持软文写作的原因
    这期内容当中小编将会给大家带来有关web开发中如何解析坚持软文写作的原因,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。软文追求的是一种春风化雨、润物无声的传播效果。如果说...
    99+
    2024-04-02
  • 如何进行Oracle监听器日志的解析
    如何进行Oracle监听器日志的解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 ////////////...
    99+
    2024-04-02
  • 如何进行Oracle AWR报告指标的解析
    这篇文章将为大家详细讲解有关如何进行Oracle AWR报告指标的解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 【性能调优】Oracle AWR报...
    99+
    2024-04-02
  • 数据库水平分割与垂直分割的区别:深入解析两种分区分区策略
    一、数据库水平分割与垂直分割概述 1. 水平分割 水平分割是指将同一张表中的数据按照某个字段值进行划分,将不同范围的数据存储在不同的数据表或磁盘分区中。水平分割可以有效地减小数据表的大小,提高查询速度,同时可以方便地对不同分区的数据进行...
    99+
    2024-02-23
    数据库 水平分割 垂直分割 性能优化 数据管理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作