ITPub博客

首页 > 数据库 > > 深入了解游标与共享SQL区、私有SQL区的问题?

深入了解游标与共享SQL区、私有SQL区的问题?

作者:vage 时间:2020-06-25 05:24:46 0 删除 编辑
今天在网上查到一篇关于游标的文章: 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中的信息。

原文作者:;如有侵权,请联系管理员删除。

下一篇: 外部验证问题?
请登录后发表评论 登录
全部评论

注册时间:2012-02-28

  • 博文量
    101
  • 访问量
    133214