【SQL 基础】SQL的处理流程

##概述
本章对SQL的处理流程进行介绍。

##SQL的处理流程概要

SQL的处理主要包括解析(parse)、执行(execute)、提取(fetch)几个步骤。

SQL的处理的详细流程可以参考以下官方文档中的流程图:

这里写图片描述

Database SQL Tuning Guide
>About SQL Processing

SQL处理主要内容:

1.解析(parse):

当应用程序执行SQL语句时,应用程序会发出解析调用(parse call)给数据库,解析调用(parse call)会打开或者创建一个游标(Cursor),并进行以下的检查:

	语法检查 : 检查语句(SQL的拼写等)是否符合SQL语法。
	
	语义检查 : 检查SQL的访问对象、访问权限等语义内容。
	
	共享池检查:检查共享池(Shared Pool)中是否有相同SQL的解析结果(执行计划)。
	(※如果通过session_cached_cursors参数设置了会话缓存,共享池检查有可能被省略)

※注:
关于游标的相关内容可以参考【游标(Cursor)】一文

根据共享池检查结果,解析(parse)步骤又可以分为软解析(Soft Parse)和硬解析(Hard Parse):

软解析(Soft Parse):

	在共享池中找到了相同SQL的解析结果(执行计划)。
	不需要由优化器重新生成相关执行计划,重用存在的执行计划。
	
硬解析(Hard Parse):

	在共享池中没有找到了相同SQL的解析结果(执行计划)。
	需要由优化器重新生成相关执行计划。

优化器生成执行计划的详细内容和过程将在以后的章节中介绍,这里不做累述。

2.执行(execute):

根据解析结果的执行计划,进行代入相关的绑定变量值等准备工作,执行SQL。
INSERT/UPDATE/DELETE SQL操作会在这个步骤中进行数据更新。

3.提取(fetch):

当SQL文为查询(Select)操作时,提取(fetch)步骤用于返回查询结果。
如果返回查询结果为多行时,提取(fetch)操作可能进行多次。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SQLplusDB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值