SQL语句在oracle数据库内是如何执行的

1.建立连接:

  ***客户端要访问数据库,则oracle会在客户端和服务器进程之间建立一个会话,并在服务器上建议一个专门处理这个会话的进程,即服务器进程也叫做前台进程,为服务器分配PGA内存来存放客户端PGA内存与服务器进程保持一一对应,不与其他进程共享客户端键入sql命令,通过连接将sql命令传输到服务端。

难点解析客户端和服务端是如何连接的

Oracle客户端和服务器之间的连接是通过网络协议来实现的,以下是连接的基本过程:

1.客户端发起连接请求:当客户端应用程序需要连接到Oracle数据库时,它会通过相应的数据库连接库发送连接请求。

2.服务器接受连接请求:Oracle数据库服务器会监听指定的端口,等待来自客户端的连接请求。一旦收到连接请求,服务器会接受并建立连接。

3.握手过程:一旦连接建立,客户端和服务器会进行握手过程,以确保双方能够正确通信。这包括确定通信协议、加密方式(如果启用了加密)、认证等。

4.身份验证:一旦握手完成,客户端需要提供合适的身份验证信息(如用户名和密码)以便服务器验证客户端的身份。服务器会验证客户端提供的信息,并决定是否允许客户端连接。
5.建立会话:一旦身份验证通过,服务器会为客户端分配一个会话(session),用于在数据库服务器上执行SQL语句和其他操作。
6.数据传输:一旦会话建立,客户端可以通过已建立的连接向服务器发送SQL查询和其他操作请求。服务器会执行这些请求,并将执行结果返回给客户端。
7.关闭连接:当客户端不再需要连接时,可以主动关闭连接,释放资源并断开与数据库服务器的连接。

2当sql执行时

Oracle会在PGA的私有SQL区创建一个游标,存放执行的SQL语句信息,绑定的变量信息,执行状态等。游标是PGA内存中的私有区域,游标也可看做是PGA的私有区域,相当于客户端的一个指针。应用程序与这个游标进行通信。

术语分析:游标

游标(Cursor)是一种用来处理查询结果集的数据库对象。游标可以被认为是一个指向查询结果集的指针,允许应用程序逐行地处理查询结果数据。当执行一个查询语句后,数据库会为该查询分配一个默认的游标,通过游标,应用程序可以更加灵活地处理查询结果集,实现更复杂的逻辑和处理需求。

  1. SQL解析阶段

(1)语法检查

Oracle对SQL语句进行语法检查,例如SQL语句中是否有from。语法是否正确。

(2)语意检查

Oracle对SQL语句进行语检查,语意是否正确,例如SQL语句访问的表是否存在。

(3)权限检查

是否有权限可以访问想要访问的表。

(4)共享池检查

将要执行的SQL语句是否在共享池中存在

  1.若存在,将会在共享池中奖数据信息拿出,进入执行部分

    这种情况被称为:软解析。

  2.若不存在将会进行硬解析生成初步的执行计划。

(5)优化

Oracle的优化器是oracle内置的优化软件,在诸多的执行计划中选择最优的执行计划作为最终的执行计划。

(6)行源生成器

将接收到的最终执行计划,编译成二进制可执行文件,生成一个真正可以被使用的执行计划。

(7)执行

SQL引擎通过可被执行的执行计划来执行访问数据。

若数据不在内存的缓冲区,从磁盘读取数据到缓冲区缓存。将数据块布置到PGA内存中去,进行数据提取,排序,聚合等操作。

(8)返回结果

最后将结果集返回到客户端程序,关闭游标,关闭通信。

术语分析:软解析

在Oracle数据库中,软解析(Soft Parsing)是指数据库在执行SQL语句之前,首先对SQL语句进行解析,并生成执行计划的过程。软解析是在数据库缓存中进行的解析过程,如果数据库中已经存在相同的SQL语句以及相应的执行计划,则可以直接使用缓存中的执行计划,而不需要重新解析SQL语句。

软解析的优点包括减少了对数据库资源的消耗,因为不需要每次都重新解析相同的SQL语句,从而提高了数据库的性能和响应速度。另外,软解析也有助于减少了锁的竞争,降低了数据库的并发访问冲突,提高了数据库的整体并发性能。

术语分析:硬解析

硬解析(Hard Parsing)是指数据库在执行SQL语句之前,对SQL语句进行完整的解析和语法分析,并生成执行计划的过程。与软解析不同,硬解析是在每次执行SQL语句时都进行的解析过程,不会利用缓存中已有的执行计划。

硬解析的优点是可以确保每次执行的SQL语句都能够得到最新的执行计划,不会受到缓存中执行计划的影响。这种方式可以保证数据库系统的稳定性和可靠性,避免由于缓存中旧执行计划导致的性能问题。

然而,硬解析的缺点是会增加数据库系统的负载和消耗,因为每次执行SQL语句都需要进行完整的解析和生成新的执行计划,这会占用大量的CPU和内存资源,导致数据库性能下降。另外,由于硬解析会引起锁的竞争和数据库对象的重复编译,可能会导致并发性能下降和资源浪费。

术语分析:执行计划

执行计划是数据库管理系统在执行SQL查询时确定如何访问数据的详细步骤的计划。它描述了数据库系统将如何访问表中的数据以执行查询,并且通常包括所用的索引、连接方法、数据访问方式等信息。执行计划是由数据库优化器生成的,它根据查询语句、表结构、索引等信息来确定最优的执行方式。

执行计划通常以树状结构显示,在树的根部是查询的顶层操作,比如扫描表或索引,而子节点可能是连接、聚合或排序等操作。执行计划包含了每个操作的估计成本、行数、以及执行顺序等信息。通过查看执行计划,数据库管理员可以了解数据库是如何执行查询的,从而进行性能调优或优化查询语句。

执行计划的优化是数据库性能调优的重要一环,通过调整索引、重写查询语句、重新设计表结构等方式,可以使得数据库系统生成更加高效的执行计划,从而提升查询性能和减少资源消耗。常见的数据库管理系统如Oracle、SQL Server、MySQL等都提供了用于查看执行计划的工具和命令,以帮助用户进行性能优化。

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值