数据库
数据库特性
PL/SQL
| Oracle 数据库 10g 中 PL/SQL 的新增内容
和每个新版本一样,Oracle 数据库 10g 引进了一些新的 PL/SQL 语言特性,并提供了一些新的 PL/SQL 程序包。在本页页尾我们简要地把它们列了出来。 不过在这个版本中,PL/SQL 方面的最重要的改进是一些 明显 的变化带来的运行期性能的显著提高。Oracle 数据库 10g 推出了一个新的 PL/SQL 编译器和一个经过重新调整的 PL/SQL 运行环境。此外,用于 PL/SQL 原生编译的系统也得到了很大的改善。因而,用户可以期待
这些倍数如此之大,以至于它们可能看起来确实难以置信。为了避免您怀疑这些数字,我们提供了大量的证实资料: PL/SQL 正变得更快 说明了 PL/SQL 编译器和运行期系统的工作方式,并显示了这种程度的重大改进是如何真正成为可能的。 PL/SQL 性能测量工具 叙述了一个性能实验,该实验的结论就是上面提到的那些大的性能改进倍数。我们提供了一个可下载的工具包,以使您能够自己重复这个实验。 自由、有序以及 PL/SQL 优化 主要针对专业的 PL/SQL 编程人员,其中介绍了新编译器的使用和功能。 PL/SQL 性能 揭秘 主要针对使用 PL/SQL 代码的读者,重新解读了一些旧的 PL/SQL 性能概念。 PL/SQL 正变得更快 这篇白皮书来自 Oracle Corporation 的 PL/SQL 小组提供的一篇相同标题的 OracleWorld 2003 演示文稿。它说明了对从 Oracle9i 数据库第 2 版转移到 Oracle 数据库 10g 的 PL/SQL 编译和运行时系统所作的彻底的修改。其中还介绍了在这一长期项目中,某些运行时系统改进是如何在早期版本中“遗漏”的(从 Oracle8i 数据库开始)。 PL/SQL 性能测量工具 本文讲述了一个实验,其中使用了一大组有代表性的测试程序,这些程序测量了在附带的白皮书 PL/SQL 正变得更快中提到的那些变化的效果,并提供了实验结果和它们的分析。 使读者能够重复实验和验证结果所需的全部已经被打包,并在这个网站上提供下载。本文还可用作下载工具包时的说明手册。它显示了您如何能够轻松地在实验中包含您自己的测试程序。 下载完整的软件工具包 (6040 Kb) 自由、秩序和 PL/SQL 优化 为了实现加速,Oracle 数据库 10g PL/SQL 编译器对原来的源代码进行了些微重组(就像所有的优化编译器那样)。这些优化不仅应用到了经过解释的 PL/SQL 程序上,而且也应用到了原生编译的 PL/SQL 程序上。这些重组可能会导致 PL/SQL 程序在细节行为上出现“无关紧要”的变化。 本文确切地说明了可能发生的变化及其原因;这是对之前只是稍微提到过的 PL/SQL 定义的部分的一个详细说明。那些设计或编写 PL/SQL 应用程序和大致熟悉 PL/SQL 参考资料的人将从阅读本文中获益,而那些负责将现有的应用程序从早期的 Oracle 数据库版本中移植出来的人同样也将从阅读本文中获益。这篇资料是技术性的,但我们尽力使演示文稿保持足够清楚,以使所有对 PL/SQL 感兴趣的人都可以从中获益。 PL/SQL 性能 揭秘 Oracle 数据库 10g 中的 PL/SQL 改进改变了编程人员对传统人工优化的看法。该白皮书详细阐释了一些有关 PL/SQL 性能的旧概念,并说明了一些不再使用、而另一些因为合理仍在继续使用的概念。此外,其中还探讨了一些根本就不合理,但却神秘流行开来的概念。 该白皮书介绍了一个其结果不言自明的实验性调查。然而,该文并没有利用 Oracle 总部(他们采用了该语言)的小组提供的对 PL/SQL 内在的特殊理解。这些结果及其专业解释表明,如今在 Oracle 数据库 10g 中,PL/SQL 编程人员可提高代码的清晰度和正确性,并将生成高效运行时代码的作业委托给编译器和运行环境。 新的 PL/SQL 语言特性概要 Oracle 数据库 10g 引进了对这些新的语言特性的支持:
除了用户自定义的引号字符(为编程人员提供的一个方便特性)之外,所有这些特性都是有关性能的,当然,它们都拥有高效的实现。例如,IEEE 数据类型具有对数学实数进行机器运算的好处。使用了任意这些新特性且用 PL/SQL 来表示的一个相应的算法任务将比没有使用这些特性的算法任务运行快了许多。 PL/SQL 正变得更快 白皮书报告了对于非常依赖 数字 算法的测试程序和利用新的 binary_double 重新进行了实施的测试程序,速度提高的 倍数 在 4 到 13 之间。 在这个新的语言特性列表中,除 forall 增强和关于 PL/SQL 整数的变化之外,所有特性正式地讲都是 SQL 中的新特性。PL/SQL 有义务在一个 PL/SQL 上下文中(例如,在 PL/SQL 赋值语句中)支持所有这些 SQL 特性。这是 PL/SQL 独一无二的能力,并且这与它拥有和 SQL 一样的数据类型系统的事实密切相关。PL/SQL 开发小组尽力使用户能够无缝地一起使用 SQL 和 PL/SQL。 新的 PL/SQL 编译器还引进了对编译器 警告 的支持。警告的类型有多种( 严重、 性能 和 信息)。每一种类型和每一个单独的警告都可以独立地 启用、 禁用,或者作为一个编译 错误 来对待。 新提供的 PL/SQL 程序包概要 PL/SQL 程序包在扩展 SQL 不能满足目的时用来扩展 Oracle 数据库的功能。因此,它们实施了大量的功能。在讨论新的 PL/SQL 特性的时候,很自然我们在这一部分中将把范围限制在那些能够被认为增强了 PL/SQL 语言本身的程序包上。
|