暂无图片
分享
无语的跑步
2019-04-24
SQL执行过程的一些困惑

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查询执行计划?



收藏
分享
3条回答
默认
最新
章芋文

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

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

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


参考:

image.png

暂无图片 评论
暂无图片 有用 0
无语的跑步

第2个问题,那为什么还能在PGA进行排序

暂无图片 评论
暂无图片 有用 0
无语的跑步
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏