关键词不能为空

当前您在: 主页 > 英语 >

SQL执行流程

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-24 15:45
tags:

-

2021年2月24日发(作者:resistant是什么意思)


SQL


语句的执行过程


(SQL Statement Execution)


图中概要的列出了处理和运行一个


sql


语句的需要各个重要阶段。在某些情况下,

Oracle




sql


的过程可能与下面列出的各个阶段的顺序有所不同。如


DEFINE


阶段可能在


FETCH


阶段之前,这主要依 赖你如何书写代码。




对许多


oracle


的工具来说,


其中某些阶段会自 动执行。


绝大多数用户不需要关心各个阶段的


细节问题,然而, 知道执行的各个阶段还是有必要的,这会帮助你写出更高效的


SQL

语句


来,而且还可以让你猜测出性能差的


SQL

< p>
语句主要是由于哪一个阶段造成的,然后我们针


对这个具体的阶段,找出解 决的办法




本节给出一个例子来说明 在


DML


语句处理的各个阶段到底发生了什么事情。

< p>



假设你使用


Pro* C


程序来为指定部门的所有职员增加工资。程序已经连到正确的用户,你


可以在你的程序中嵌入如下的


SQL


语句:

< p>



EXEC SQL UPDA


TE employees



SET salary = 1.10 * salary



WHERE department_id = :var_department_id;



var_dep artment_id


是程序变量,里面包含部门号,我们要修改该部门的职员的工资。 当这个


SQL


语句执行时,使用该变量的值。

< br>



每种类型的语句都需要如下阶段:




?




1



: Create a Cursor


创建游标




?




2



: Parse the Statement


分析语句




?




5



: Bind Any Variables


绑定变量




?




7



: Run the Statement


运行语句




?




9



: Close the Cursor


关闭游标




如果使用了并行功能,还会包含下面这个阶段:




?




6



: Parallelize the Statement


并行执行语句




如果是查询语句,则需要以下几个额外的步骤,如图



3


所示:




?




3



: Describe Results of a Query


描述查询的结果集




?




4



: Define Output of a Query


定义查询的输出数据




?




8



: Fetch Rows of a Query


取查询出来的行





1



:


创建游标


(Create a Cursor)



由程序接口调用创建一个游标(


cu rsor



。任何


SQL


语句都会创建它,特别在运行


DML



句时,都是自动创建游标的,不需要开发人员干预。多数应用中,游标的创建是自动的。然

< p>
而,在预编译程序


(pro*c)


中游标的创建, 可能是隐含的,也可能显式的创建。在存储过程中


也是这样的。





2



:


分析语句


(Parse the Statement)



在语法分析期间,

< br>SQL


语句从用户进程传送到


Oracle



SQL


语句经语法分析后,


SQL


语句


本身与分析的信息都被装入到共享


SQL


区。在该阶段中,可以解决许多类型的错误。




语法分析分别执行下列操作:







翻译


SQL


语句,验证它是合法的语句,即书 写正确






实现数据字典的查找,以验证是否符合表和列的定义






在所要求 的对象上获取语法分析锁,使得在语句的语法分析过程中不改变这些对象的定







验证为存取所涉及的模式对象所需的权限是否满足






决定此语句最佳的执行计划






将它装入共享


SQL







对分布的语句来说,把语句的全部或 部分路由到包含所涉及数据的远程节点




以上任何一步出现错误,都将导致语句报错,中止执行。




只有在共享池中不存在等价


SQL< /p>


语句的情况下,


才对


SQL


语句作语法分析。


在这种情况下,


数据库内核重新为 该语句分配新的共享


SQL


区,并对语句进行语法分析。进行语 法分析需


要耗费较多的资源,所以要尽量避免进行语法分析,这是优化的技巧之一。




语法分析阶段包含了不管此语句将执行 多少次,


而只需分析一次的处理要求。


Oracle

< p>
只对每



SQL


语句翻译 一次,在以后再次执行该语句时,只要该语句还在共享


SQL


区 中,就可以


避免对该语句重新进行语法分析,


也就是此时可以直 接使用其对应的执行计划对数据进行存


取。这主要是通过绑定变量


(bind


variable)


实现的,也就是我们常说的 共享


SQL


,后面会给


出共享


SQL


的概念。



< /p>


虽然语法分析验证了


SQL


语句的正确性 ,


但语法分析只能识别在


SQL


语句执 行之前所能发


现的错误


(


如书写错误、 权限不足等


)


。因此,有些错误通过语法分析是抓不到的。例如 ,在


数据转换中的错误或在数据中的错


(如企图在主键中插入重 复的值)


以及死锁等均是只有在

-


-


-


-


-


-


-


-



本文更新与2021-02-24 15:45,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/670463.html

SQL执行流程的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文