Oracle执行一条SQL的内部过程

一、SQL语句根据其功能主要可以分为以下几大类:

1. 数据查询语言(DQL, Data Query Language)

  • 功能:用于从数据库中检索数据,常用于查询表中的记录。
  • 基本结构:主要由SELECT子句、FROM子句、WHERE子句等组成。
  • 关键字:SELECT。
  • 示例:SELECT 字段名 FROM 表名 WHERE 条件;

2. 数据操纵语言(DML, Data Manipulation Language)

  • 功能:用于对数据库表中的数据进行增删改操作。
  • 主要形式:
    • 插入(INSERT):向表中添加新的记录。
    • 更新(UPDATE):修改表中的已有记录。
    • 删除(DELETE):从表中删除记录。
  • 关键字:INSERT、UPDATE、DELETE。
  • 示例:
    • 插入:INSERT INTO 表名 (字段1, 字段2, …) VALUES (值1, 值2, …);
    • 更新:UPDATE 表名 SET 字段名 = 新值 WHERE 条件;
    • 删除:DELETE FROM 表名 WHERE 条件;

二、Oracle执行一条SQL的内部过程

Oracle数据库执行一条SQL语句的内部过程是一个复杂而精细的操作,它涉及多个组件和步骤的协同工作。虽然具体实现细节可能会随着Oracle数据库版本的不同而有所变化,但下面是一个简化和通用的过程描述,涵盖了从SQL语句提交到结果返回的主要步骤:

1. SQL语句提交

  • 用户接口:用户通过SQL*Plus、SQL Developer、PL/SQL Developer或其他数据库工具提交SQL语句。
  • 网络传输(如果适用):对于远程数据库,SQL语句通过网络协议(如TCP/IP)发送到数据库服务器。

2. 解析

  • 语法检查:Oracle首先检查SQL语句的语法是否正确。
  • 语义检查:然后,它检查SQL语句中引用的表、列、数据类型等是否存在于数据库中,以及用户是否有足够的权限访问它们。
  • 共享池查询:Oracle会检查共享池(Shared Pool)中的库缓存(Library Cache),看是否已经存在相同或相似的SQL语句的执行计划。如果存在,它可能会重用已有的执行计划,这个过程称为SQL语句的软解析。如果不存在,则需要进行硬解析。
    在这里插入图片描述
    官方的Oracle体系结构图,可见实例是系统分配给Oracle的内存和一堆进程的结合体,这里主要回顾执行sql语句会涉及到的几个部分:
  • SGA中的shared pool、database buffer cache、redo log buffer,
  • PGA中的Hash Area、Private SQL Area
  • 进程中的DBWn、LGWR、CKPT

在这里插入图片描述
shared pool区域如上图,包括 Library Cache、Data Dictionary Cache 和 Server Result Cache

  • Library Cache 主要用于储存可执行的SQL和PL/SQL代码
  • Data Dictionary Cache 主要用于缓存数据字典的相关数据,该缓存区域对所有服务进程共享
  • Server Result Cache 主要用于保存SQL和PL/SQL执行产生的结果集

3. 硬解析

如果SQL语句需要硬解析,Oracle会执行以下步骤:

  • 生成执行计划:Oracle优化器根据统计信息、索引、表的物理结构等因素,生成SQL语句的一个或多个可能的执行计划。
  • 选择最佳执行计划:优化器会评估每个执行计划的成本,并选择成本最低的执行计划。
  • 将执行计划存储在共享池中:选择的执行计划会被存储在共享池中的库缓存中,以便将来可以重用。

4. 执行

  • 数据访问:根据执行计划,Oracle会访问数据库中的表、索引等对象,获取需要的数据。
  • 排序和聚合:如果SQL语句中包含ORDER BY、GROUP BY等子句,Oracle会对数据进行排序和聚合操作。
  • 连接:如果SQL语句涉及多个表的连接操作,Oracle会按照执行计划中的指示执行连接操作。

5. 返回结果

  • 结果集构建:将查询结果构建成一个结果集。
  • 返回给客户端:将结果集通过网络(如果适用)返回给发起查询的客户端。

6. 后处理

  • 日志记录:Oracle会记录与查询相关的日志信息,如Redo日志、Undo日志等。
  • 资源清理:释放查询执行过程中使用的资源,如内存和临时空间。

需要注意的是,这个过程是高度优化的,Oracle数据库在设计和实现时考虑到了各种优化技术,以最小化查询时间、最大化系统吞吐量并优化资源使用。此外,随着Oracle数据库版本的更新,内部实现和性能优化可能会有所不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/791525.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js逆向第24例:FastMoss数据分析网站Fm-Sign加密字段破解

文章目录 一、前言二、定位关键参数三、代码实现一、前言 破解:FastMoss数据分析网站Fm-Sign加密字段 二、定位关键参数 先看一下网站加密字段是长什么样,如下图,老手估计一下子就能发现字段Fm-Sign:的密文类似md5加密后的结果。 直接全局搜索Fm-Sign:看来key也没有做混…

SpringMVC(3)——SpringMVC注解实战

前言 SpringMVC(2)——controller方法参数与html表单对应(请求参数的绑定) 上篇博客我们提到了controller方法的参数与html表单之间的对应关系 但是这种对应关系有很多缺点: 传递参数只能放在request的body当中&am…

K8S中部署 Nacos 集群

1. 准备 GitK8Skubectlhelm 咱也没想到 K8S 部署系列能搞这么多次,我一个开发天天干运维的活,前端后端运维测试工程师实至名归。 2. 方案选择 https://github.com/nacos-group/nacos-k8s 我替你们看了一下,有好几种方式能部署&#xff…

防火墙图形化界面策略和用户认证(华为)

目录 策略概要认证概要实验拓扑图题目要求一要求二要求三要求四要求五要求六 策略概要 安全策略概要: 安全策略(Security Policy)在安全领域具有双重含义。宏观上,安全策略指的是一个组织为保证其信息安全而建立的一套安全需求、…

PDF 中图表的解析探究

PDF 中图表的解析探究 0. 引言1. 开源方案探究 0. 引言 一直以来,对文档中的图片和表格处理都非常有挑战性。这篇文章记录一下最近工作上在这块的探究。图表分为图片和表格,这篇文章主要记录了对表格的探究。还有,我个人主要做日本项目&…

最优化(10):牛顿类、拟牛顿类算法

4.4 牛顿类算法——介绍了经典牛顿法及其收敛性,并介绍了修正牛顿法和非精确牛顿法; 4.5 拟牛顿类算法——引入割线方程,介绍拟牛顿算法以及拟牛顿矩阵更新方式,然后给出了拟牛顿法的全局收敛性,最后介绍了有限内存BFG…

如何抓取和处理天气网站数据

目的 在进行气象研究时,获取准确的历史天气数据是至关重要的。本文将分享如何从天气网站收集数据并将其转化为表格形式,以便于后续分析。然而,在直接抓取数据时,可能会遇到API接口保护的问题。本文将详细解释解决这些问题的步骤&…

LLM - 绝对与相对位置编码 与 RoPE 旋转位置编码 源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140281680 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Transformer 是基于 MHSA (多头自注意力),然而,MHSA 对于位置是不敏感…

ONLYOFFICE 8.1版本版本桌面编辑器测评

ONLYOFFICE官网链接:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE ONLYOFFICE在线办公套件:在线办公套件 | ONLYOFFICE ONLYOFFICE在线PDF编辑器、阅读器和转换器:在线PDF查看器和转换器 | ONLYOFFICE ONLYOFFICE 8.1版本桌面编辑器是…

Linux文件:EXT2文件系统工作原理 软硬链接

Linux文件:文件系统究竟是什么?如何管理文件? 前言一、磁盘结构、存储策略1.1 磁盘存储结构1.2 磁盘存储策略1.3 磁盘的逻辑存储结构 二、如何管理磁盘文件三、如何管理组3.1 每个组保存的数据种类3.2 如何管理数据1、节点表(inod…

推荐算法——MRR

定义: MRR计算的是第一个正确答案的排名的倒数,并对所有查询取平均值。它衡量了模型在排序结果中快速找到正确答案的能力。 其中: Q 是查询的总数。ranki​ 是第 i 个查询中第一个正确答案的排名(位置)。如果第一个正…

设计模式8-桥模式

设计模式8-Bridge 桥模式 由来与目的模式定义结构代码推导1. 类和接口的定义2. 平台实现3. 业务抽象4. 使用示例总结1. 类数量过多,复杂度高2. 代码重复3. 不符合单一职责原则4. 缺乏扩展性改进后的设计1. 抽象和实现分离(桥接模式)2. 抽象类…

本地部署,GFPGAN: 实用的面部修复算法

目录 什么是 GFPGAN? 技术原理 主要功能 应用场景 本地安装 运行结果 结语 Tip: 在图像处理和计算机视觉领域,面部修复是一个重要且具有挑战性的研究方向。随着深度学习技术的不断进步,许多新的算法被提出,用于…

基于JavaSpringBoot+Vue+uniapp微信小程序校园宿舍管理系统设计与实现(7000字论文参考+源码+LW+部署讲解)

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

打包时提示:Missing Gradle Project Information.或者在加载gradle时出错

1.Android打包弹出错误提示框:missing gradle project information. please check if the IDE successfully synchronized its state with the Gradble project model. 2.加载gradle出错:修复报错后 File -> Sync Project with Gradle Files

【DevOps】在云原生时代的角色与重要性探索

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是云原生 2、云原生的核心特性 3、什么是DevOps…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 找单词(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

javaweb图书商城系统带万字文档网上书城java项目java课程设计java毕业设计

文章目录 图书商城系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档(9.9¥带走) 图书商城系统 一、项目演示 网上书城 二、项目介绍 语言:java 数据库:…

vue2+Dexie.js基本使用——前端大容量存储IndexedDB 的包装库

文章目录 IndexedDB存储IndexedDB常用概念Dexie.js操作流程获取一个数据库实例定义对象存储空间和索引等数据库结构_基本增删查改 IndexedDB 是一个事务型数据库系统,类似于基于 SQL 的 RDBMS。然而,不像 RDBMS 使用固定列表,IndexedDB 是一个…

数据结构 —— BellmanFord算法

数据结构 —— BellmanFord算法 BellmanFord算法检测负权值环BellmanFord和Dijkstra思想上的区别Dijkstra算法的思想Bellman-Ford算法的思想思想上的对比 我们今天来看一个算法BellmanFord算法,我们之前的Dijkstra算法只能用来解决正权图的单源最短路径问题。 Bell…