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

Oracle中SQL语句运行过程的深度解析

最近项目做完了(也许并不能说做完了),但是出现了一个致命的障碍,就是性能。现在想想TOP的作者是讲的是多么的精辟,性能是贯穿

最近项目做完了(也许并不能说做完了),但是出现了一个致命的障碍,就是性能。现在想想TOP的作者是讲的是多么的精辟,性能是贯穿

最近项目做完了(也许并不能说做完了),但是出现了一个致命的障碍,就是性能。现在想想TOP的作者是讲的是多么的精辟,性能是贯穿在项目需求,项目分析设计,项目编码和单元测试、集成等各个阶段。而不是等项目开发完毕,再来考虑性能问题。但是,事实已是如此。所以,最近先从SQL语句开始优化, 为了更好地优化SQL,那么首先自然需要知道Oracle中的SQL引擎对一条给定的SQL语句,他都做了哪些鲜为人知的事情。本文为个人学习总结,仅作学习记录,其中不妥或者错误之处,敬请指出,本人感激不尽!

为了延续TOP中从Cursor开始说明,这里的Cursor并非PL/SQL中的Cursor,至于这个Cursor是什么,怎么用中文解释,暂时还不清楚。但是我想他其实是一个概念性的东西,代表了SQL在不同环境中的称谓。顽皮点地说,当一条SQL语句进入了SQL引擎,其就被Cursor了。下面看一张TOP上的Cursor的生命周期:


1:Open Cursor:在本次会话的服务器进程的私有内存UGA(User Global Area)中会开辟一个内存区给这个Cursor。此时,SQL语句还没有和该Cursor相关联。

2:Parse Cursor:这个过程就会让SQL语句和Cursor相关联了。这个步骤就是通常意义的SQL解析,最后将执行计划存入共享区。然后UGA中的Cursor会用一个指针指向共享区的一个可共享的Cursor。

3:Define output variables:定义输出变量主要是对于查询和使用了returning语法的insert,update,和delete语句。

4:Bind input variables:如果SQL使用了绑定变量,,则这里需要获取绑定变量的值。

5:Execute cursor:执行,但是SQL语句真正的执行往往会延迟到下个步骤。

6:Fetch cursor:如果sql返回数据,则这里获取返回的数据。

7:Close cursor:关闭cursor,释放UGA中占用的资源。但是共享区中的cursor并不会释放。

在上面这个过程中,对于我们关心的SQL语句的解析,一笔带过。下面继续分析第二个步骤Parse Cursor。对于SQL语句的解析,早就听说是软解析和硬解析,下面我们分析下整个解析的过程:


推荐阅读
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 对于初次购买阿里云服务器的新手用户来说,如何高效地利用服务器资源并成功部署网站是一个重要的课题。本文将详细指导您完成从购买服务器到网站上线的六个关键步骤。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • 集群与负载均衡技术解析
    本文探讨了集群(Cluster)的概念,即通过网络连接的一组计算机系统,它们作为一个整体提供服务,实现分布式计算。文章还详细介绍了负载均衡技术,旨在提高网络服务的效率和可靠性。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 本书《Pro Git》深入探讨了 Git 版本控制系统的核心概念与高级功能,旨在帮助开发者和团队有效管理代码变更。通过实例和最佳实践,读者将学习如何利用 Git 提升工作效率。 ... [详细]
  • 探讨了生成时间敏感的一次性伪随机密码的方法,旨在通过加入时间因素防止重放攻击。 ... [详细]
  • 惠普战86 Pro G2:新一代商用台式机的性能与设计解析
    惠普战86 Pro G2台式机以其卓越的性能和紧凑的设计,满足了现代商务环境的需求。本文将详细介绍这款商用台式机的各项特点,包括其强大的硬件配置、精美的外观设计以及出色的稳定性和安全性。 ... [详细]
  • Redis中的字符串对象解析
    Redis中字符串对象的编码方式包括int、raw和embstr。当字符串对象存储的是可由long类型表示的整数时,该值会被直接存储在对象的ptr属性中,此时对象的编码被设为int。 ... [详细]
  • 本文介绍了一种在Oracle 19c数据库中恢复被误删除表数据的方法,包括启用行移动功能和使用闪回技术,适用于表结构未被删除但数据丢失的情况。 ... [详细]
author-avatar
法国警方解放军_847
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有