SQL执行过程的一些困惑

问题归档 2019-05-20
25
0 0
摘要: 为什么先要执行语义语法的解析再去library cache查询执行计划?

问题描述

SQL在客户端提交后,将SQL存入PGA的私有SQL区域,由服务器进程掉入SHARE POOL 进行 解析,第一步是语法解析,比如select少打了T,打成了selec,  系统报SP2-0734unkown command begining ...错误。请问下是谁来执行或者说是判断来返回SP的错误告警?也是由数据字典缓存来执行或者判断吗?

在DATABASE BUFFER CACHE执行以后,查询出来的数据通过PGA返回给客户端。请问下查询出来的返回给客户端的数据是存在PGA的私有SQL区域还是存在DATABASE BUFFER CACHE?

软解析过程中,为什么不先查询执行计划,发现有相同的SQL和执行计划直接去 DATABASE buffer cache执行 ,这样不快一些吗? 为什么先要执行语义语法的解析再去library cache查询执行计划?



专家解答

1、解析器第一步就是对SQL语法检查,这步不通过就直接报错,与数据字典缓存无关

2、是不是把buffer cache和shared pool两者的概念弄混淆了,从buffer cache读取的数据直接通过网络返回给了客户端,没有经过PGA

3、只有先检查语义语法才能得到SQLID,然后才可以去查询SQL的执行计划


参考:

image.png

「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
Oracle
订阅
欢迎订阅Oracle频道,订阅之后可以获取最新资讯和更新通知。
墨值排行
今日本周综合
近期活动
全部
相关课程
全部