【SQL 基础】SQL的处理流程

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 【SQL 基础】SQL的处理流程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

本章对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)操作可能进行多次。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141618.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!