首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pragma内联Vs钉住oracle中的对象

Pragma内联Vs钉住oracle中的对象
EN

Stack Overflow用户
提问于 2012-03-30 23:42:19
回答 1查看 1.1K关注 0票数 2

谁能告诉我INLINE Pragmapinned objects in oracle的区别是什么?

根据我对pinning objects means Keeping database packages in the Oracle database's系统全局区(SGA)共享池的理解`

Inline Pragma指定子程序调用是否内联。内联将子程序调用(对同一程序单元中的子程序)替换为compile time中被调用的子程序的副本。

oracle还将编译后的代码存储在SGA中,如果用户对数据库中的同一对象也执行Pinning,该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-31 00:57:54

Oracle必须将代码加载到SGA中的共享池中才能运行它,是的。通常,不需要将对象固定在内存中,因为Oracle根据最近最少使用的算法将它们从共享池中老化出来。因此,如果一段代码被频繁调用,它将被保存在共享池中。如果它不经常被调用,它可能会过期,您可能需要在下一次调用时重新从磁盘读取它。但这通常正是您希望发生的事情--您希望优化频繁发生的事情,并且希望在从磁盘读取不经常访问的代码时产生一些磁盘I/O的开销。

内联确定编译器是否选择内联复制子程序的代码,这通常会使编译后的产品稍微大一些,因此在共享池中需要稍微多一点的空间,以换取不必在运行时跳转到子程序。一般来说,内联不是你用PRAGMA手动指定的东西,它是由编译器通过将PLSQL_OPTIMIZE_LEVEL设置为3来自动处理的东西。

使用PLSQL_OPTIMIZE_LEVEL=3,PL/

编译器寻找内联子程序的机会。您不需要指定要内联的子程序。但是,您可以使用内联杂注(使用上述语法)为子程序提供内联的高优先级,然后编译器将其内联,除非其他考虑因素或限制使内联变得不可取。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9946223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档