811g新特性PLSQL性能.docxVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
811g新特性PLSQL性能

Oracle Database 11g: 面向 DBA 和开发人员的重要新特性PL/SQL 性能通过研究代码内联、真正的原生编译以及简单整数的用例来了解如何提高代码性能。Oracle Database 11g 引入了许多极有用的新特性用以提高 PL/SQL 代码的性能,但其中最引人注目的特性是原生编译和内部单元内联。原 生编译本身不是新特性,但无需任何前提条件(如安装 C 编译器)即可使用此特性却是一项新技术。(Oracle 将这个改进的性能称为“真正的原生编译”。)此外,新的数据类型 simple_integer 使得代码在原生编译下可以更好地执行。内部单元内联是一种优化技术,利用此技术,PL/SQL 代码在编译期间可以生成有效代码。在本文中,您将看到这些新特性的相应用例。您还会了解这些用例在不同方案中的性能:执行原生编译时、使用简单整数时、内联程序时以及在各种组合方案中。真正的原生编译您可能会想起 Oracle9i 数据库第 2 版中引入的原生编译;与解释形式相比,使用原生编译时 PL/SQL 程序的执行速度要快得多。尽管有上述优点,但采用率却很低,这是因为许多系统管理员都不愿意在生产数据库服务器上安装所需的 C 编译器。另外,此类编译器还要求定义用于创建 O/S 中间文件的参数 plsql_native_library_dir。在 Oracle Database 11g 中,无需在服务器上安装 C 编译器或设置参数即可执行原生编译。只需在创建或重新编译存储的代码之前设置一个会话参数即可:alter session set plsql_code_type = native;... compile the code here ...原生编译所需时间比解释编译长,但由于目前在 Oracle Database 11g 中执行进程的速度非常快,因此影响不是很明显。您可能希望在常规开发周期中使用解释编译模式,而在开发结束时使用原生编译模式,这通常是一个很好的做法。 作为 11g 移植的一部分,我用关键任务应用程序中的实际代码(一个相当大的程序包,共 5,827 行代码)做了一个试验。我在现有的 10g 数据库和新的 11g 数据库上对该代码执行了原生编译,然后使用解释编译重复了相同的操作。执行这两编译时都将 plsql_optimize_level 设置为 2。我测量了每种方案的编译时间,如下所示(以秒为单位)。10g11g解释1.661.64原生4.662.81结果显而易见。执行解释编译时,完成时间非常接近。但是执行原生编译时,在 11g 下的编译时间大大缩短,约为 10g 下的 60%。因此,尽管在 11g 下执行原生编译时延长了编译时间,但仍然比 10g 下的原生编译快的多。要了解哪些对象已使用 NATIVE 进行了编译,可以查看 USER_PLSQL_OBJECT_SETTINGS 视图:SQL select name, PLSQL_code_type 2 from user_plsql_object_settings;NAME PLSQL_CODE_TYPE-------------------- ---------------DO_CALC NATIVEPERFECT_TRIANGLES NATIVEPRIME_NUMBERS NATIVEPRIME_NUMBERS NATIVESOME_MATH INTERPRETEDTR_BOOKINGS_TRACK INTERPRETEDTR_SALGRADE_COMP INTERPRETEDUPD_INT NATIVE还有一个适用于所有对象的类似视图 DBA_PLSQL_OBJECT_SETTINGS。 新数据类型:简单整数如 果使用新的数据类型 simple_integer,则原生编译的优势更为明显。从技术上讲,它不是真正的数据类型,而是数据类型 pls_integer 的子类型。简单整数被定义为利用硬件运算而不是软件运算。将简单整数与真正的原生编译结合使用时,性能将显著提高。看了后面的试验,您就会明白其中的原 委。由于 simple_integer 是 pls_integer 的子类型,因此继承了如下属性:它是 32 位带符号整数,可以具有介于负 2,147,483,648 和 2,147,483,647 之间的整数值。但是,它与 pls_integer 之间存在以下不同点:simple_integer 不能为空,但允许溢出 — 当所分配的值超过最大值时,它将回绕而不返回错误。从语法上讲,在可以使用

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档