热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

OracleDatabaseSQL语句处理步骤

OracleDatabaseSQL语句处理步骤SQL语句的的处理步骤如下图所示:www.2cto.com一、解析1.语法检查sql语句解析的时候,先执行语法检查。看语句是否符合规范。2.语义检查这个阶段,数据库会去判断SQL语句...SyntaxHighlighter.all()

Oracle Database SQL语句处理步骤
 
SQL语句的的处理步骤如下图所示:www.2cto.com  
 
 
一、解析
 
1. 语法检查
 
sql语句解析的时候,先执行语法检查。看语句是否符合规范。
2. 语义检查
 
这个阶段,数据库会去判断SQL语句是否真正具有相应的含义,比如说sql语句涉及的表,或者字段是否存在等。
 
3. shared pool check(shared sql area check)
 
数据库执行一个shared pool check 去确定它是否可以跳过资源集中的几个步骤。
然后,数据库使用hash算法为每个sql语句生成hash值。那就是sql_id v$sql.sql_id.(sql语句shared pool check当匹配到了相同hash value 的时候,还需要其他的检查,比如说语义检查,以及系统环境,比如不同的数据库参数、不同的用户、不同的session环境等,都有可能有影响)
 
二、优化
 
在SQL语句的优化阶段,可以分为下面几个步骤。
 
1.优化器接收解析后的语句,并且生成一组基于sql语句可能的访问路径和hints的执行计划
2.优化器评估每个基于数据字典中统计信息的执行计划的cost。cost 是 预估值。
3.优化器比较并且选择最低cost的执行计划。作为查询计划,交给row source 生产器。
 
优化器的三个主要组件如下图所示:
 

 
关于这一部分以后的文章中会给出详细的说明。
 
三、row source generation
它从优化器接收最佳的执行计划,并且生成递归计划,叫做查询计划。
 
递归plan是一个二进制的程序。
当它被sql vm 执行的时候,生成结果集。
查询计划从复杂的步骤中取走一个表格。
每一步都返回一个rowset,这些rowset中的row可以被下一步使用,或者最后一步。
其实就是可操作的结果集(row set)
。它可以是视图,或者连接后的结果集,或者分类操作。
 
row source generator 生成了一个行源树,它是一个行源的集合。
行源树拥有下面的信息:
1. 一个语句引用的表的次序
2. 一个语句中提到的每个表的访问方法
3. 一个表连接方法的操作影响声明。
4. 数据操作,比如说过滤、排序、聚合。
 
四、执行
 
执行的时候,sql引擎执行由row source 生成器生成的树中的每一个行源。

推荐阅读
  • 如何在PHP中有效实现和管理互斥锁机制(PHP锁) ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 基于MATLAB的灰度图像直方图均衡化技术实现与分析
    本文利用MATLAB实现了灰度图像的直方图均衡化技术,并对其性能进行了详细分析。通过该方法,图像的对比度得到了显著提升,使得图像细节更加清晰可见。实验结果表明,该算法在处理低对比度图像时具有良好的效果。 ... [详细]
  • 浅层神经网络解析:本文详细探讨了两层神经网络(即一个输入层、一个隐藏层和一个输出层)的结构与工作原理。通过吴恩达教授的课程,读者将深入了解浅层神经网络的基本概念、参数初始化方法以及前向传播和反向传播的具体实现步骤。此外,文章还介绍了如何利用这些基础知识解决实际问题,并提供了丰富的实例和代码示例。 ... [详细]
  • 在数据仓库管理中,定时更新程序与查询SQL之间的冲突常常导致性能瓶颈和阻塞问题。为了解决这些问题,通常需要对SQL Server进行详细的性能诊断。常用的诊断工具包括系统动态管理视图(DMVs)和扩展事件(Extended Events),这些工具能够帮助识别和分析性能瓶颈的具体原因,从而采取有效的优化措施。 ... [详细]
  • 考前准备方面,我的考试时间安排在上午11点至12点,只需提前20分钟到达考场的接待休息区即可。由于我居住在福田区,交通便利,可以选择多种方式前往考场。为了确保顺利通过考试,我建议考生提前熟悉考试流程和环境,并合理规划出行时间,以保持良好的心态和状态。此外,考前复习应注重理论与实践相结合,多做模拟题,加强对重点知识点的理解和掌握。 ... [详细]
  • 本文深入解析了计算机科学领域中常用的几种排序算法,包括冒泡排序、插入排序、选择排序和希尔排序。通过对这些算法的性能进行详细对比分析,探讨了它们在不同数据规模和分布情况下的优劣。研究结果表明,冒泡排序虽然实现简单,但在大多数情况下效率较低;插入排序在部分有序的数据集中表现较好;选择排序的时间复杂度较为稳定,但空间复杂度较高;而希尔排序通过引入增量序列显著提高了排序效率,适用于大规模数据集。 ... [详细]
  • 探讨两种常数卷积的结果与一种常见的洗牌算法错误及其影响
    在编程中,随机打乱数组元素的顺序(即“洗牌”)是一个常见的需求。标准的洗牌算法是Fisher-Yates shuffle,但许多开发者在实现时容易犯错,导致结果不均匀。本文探讨了两种常数卷积的结果,并分析了一种常见的洗牌算法错误及其对随机性的影响。通过详细的实验和理论分析,我们揭示了这些错误的具体表现和潜在危害,为开发者提供改进的建议。 ... [详细]
  • 文件系统管理与设计涉及众多内容,课堂讲解较为简略。本章主要介绍了以下几点:1. 基本概念 - 文件系统:一种用于实现数据持久性存储的系统抽象。 - 文件:文件系统中的基本存储单元,包含一组相关数据。文件系统通过文件组织和管理数据,提供高效的数据访问和管理机制。此外,还涵盖了文件的属性、类型和操作方法。 ... [详细]
  • Java编程实践:N皇后问题(LeetCode第51题)
    n皇后问题探讨了在n×n的棋盘上放置n个皇后,确保任意两个皇后不会互相攻击的解决方案。本文以8皇后问题为例,展示了该问题的一种可能解法。通过给定整数n,程序将返回所有不同的n皇后问题的有效布局方案。此外,文章还详细介绍了实现这一算法的具体步骤和关键技巧,帮助读者深入理解并掌握这一经典编程挑战。 ... [详细]
  • 深入解析 Redis 源码阅读方法与技巧
    在深入解析 Redis 源码的过程中,建议首先从数据结构的实现入手。这是因为在 Redis 的整体架构中,数据结构相关的代码与其他模块的耦合度较低,有助于初学者快速理解和掌握核心概念。通过阅读这些基础文件,可以为后续深入研究打下坚实的基础。 ... [详细]
  • 求助高手:下载的压缩包中包含CMake文件,如何在Windows环境下使用已安装的CMake GUI进行运行?
    从GitHub仓库 `https://github.com/vonmax007/RobotSimulation` 下载的代码包含多种算法,其中算法1的文件目录中包含了CMake文件。为了在Windows环境下使用已安装的CMake GUI运行这些文件,需要先确保CMake已正确安装,并按照以下步骤操作:打开CMake GUI,设置源代码路径和构建路径,点击“Configure”配置项目,然后点击“Generate”生成构建文件。最后,在生成的构建目录中使用命令行或IDE进行编译和运行。 ... [详细]
  • 题目难度:★★☆☆☆ 类型:算法你是一名经验丰富的窃贼,计划对一条街道上的房屋进行盗窃。每栋房屋内都存放有一定数量的现金,但你的行动受到一个关键限制:相邻房屋安装了相互连接的报警系统,因此不能连续偷窃两间相邻的房屋。为了最大化收益,你需要设计一种高效的算法来确定最佳的盗窃方案。本文将通过 Python 代码实现这一问题的优化解决方案,并详细解析其背后的数学原理和算法思路。 ... [详细]
  • C++设计模式精华:高效学习与速记指南
    本书《C++设计模式精华:高效学习与速记指南》旨在帮助读者快速掌握C++设计模式的核心概念和应用技巧。书中详细介绍了继承这一重要机制,解释了派生类如何继承基类的属性和方法,并探讨了派生类对象如何存储和使用基类的数据成员。通过实例和代码示例,读者可以更好地理解继承在实际开发中的应用,从而提升编程效率和代码质量。 ... [详细]
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
author-avatar
哈哈哈哈哈咩咩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有