前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL的处理流程

SQL的处理流程

作者头像
SQLplusDB
发布2020-03-25 18:48:27
5580
发布2020-03-25 18:48:27
举报

概述

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

SQL的处理流程概要

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

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

Database SQL Tuning Guide >About SQL Processing

SQL处理主要内容:

1.解析(parse):

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

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

※注:

代码语言:javascript
复制
关于游标的相关内容可以参考历史消息【游标(Cursor)】

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

代码语言:javascript
复制
软解析(Soft Parse):   在共享池中找到了相同SQL的解析结果(执行计划)。
   不需要由优化器重新生成相关执行计划,重用存在的执行计划。硬解析(Hard Parse):   在共享池中没有找到了相同SQL的解析结果(执行计划)。
   需要由优化器重新生成相关执行计划。

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

2.执行(execute):

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

3.提取(fetch):

代码语言:javascript
复制
当SQL文为查询(Select)操作时,提取(fetch)步骤用于返回查询结果。
如果返回查询结果为多行时,提取(fetch)操作可能进行多次。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Oracle数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • SQL的处理流程概要
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档