暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL执行过程的一些困惑

原创 问题归档 2019-05-20
338

问题描述

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论