0

SQL执行过程的一些困惑

问题归档 2019-05-20
121

问题描述

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

「喜欢文章,快来给作者赞赏墨值吧」
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新发布
暂无内容,敬请期待...
数据库资讯
最新 热门 更多
本月热门
近期活动
全部
暂无活动,敬请期待...
相关课程
全部