绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
深入了解游标与共享SQL区、私有SQL区的问题?
2020-06-25 05:24:46
今天在网上查到一篇关于游标的文章: http://bigboar.itpub.net/post/8411/225320 这里面有这样一段话: 从这一节我们可以看到,SQL语句执行的步就是创建游标: Stage 1: Create a Cursor A program interface call creates a cursor. The cursor is created independent of any SQL statement: it is created in expectation of any SQL statement. In most applications, cursor creation is automatic. However, in precompiler programs, cursor creation can either occur implicitly or be explicitly declared. 然后,就是把SQL语句交给Oracle来解析,此时如果在shared pool的library cache发现一个和该SQL语句一样的shared SQL area,那么,直接拷贝一份作为private SQL area来执行,此叫做发生一次soft parse;如果没有找到,那么就要解析该SQL,也就是要得到该SQL的parse tree和execution plan,分配内存,存储这些信息为一个shared SQL area,然后拷贝一份做为private SQL area然后再执行,此为发生一次hard parse。 这一段话里提到要将shared SQL area中解析过的语句拷贝一份到private SQL area。我不明白的就是这里,私有SQL区中难道也要保存解析树、执行计划等这些信息吗? 文档中有说过: 游标的私有 SQL 区又可以被分为两个区域,这两部分的生命周期有所不同: 1. 持续数据区(persistent area),包含绑定信息(bind information)之类的数据。此区只在游标关闭时才会被释放。 2. 运行时区(run-time area),当游标执行结束就会被释放。 我的问题是:私有SQL区中,有没有解析树、执行计划这些已经在共享SQL中的信息。
分享好友

分享这个小栈给你的朋友们,一起进步吧。

调试数据库 ---- 源码研究方法论
创建时间:2020-06-16 17:28:11
能让你坚持下去的源码学习方法 ---- 调试数据库。Oracle的各种DUMP、Trace和Event,增加了研究这个数据库的“乐趣”,使用Oracle成为一个可研究的数据库。开源数据库当然也可以通过钻研源码的方式去研究,但这样的学习周期太长。本课程教你用调试技术不断为MySQL/PostgreSQL扩展功能,在学习源码的同时,不断开发自己的、类似Oracle DUMP、Trace、Event的小工具,这就是我所说的“正向反馈”。用正向反馈,激励自己坚持下去,终成功。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • vage
    栈主

小栈成员

查看更多
  • 叶子,你好
  • 小雨滴
  • 潘佳伟
  • 东风快递
戳我,来吐槽~