【发布时间】:2017-06-23 06:29:20
【问题描述】:
有人要求我在不影响功能的情况下提高包性能。如何开始优化?有什么建议
【问题讨论】:
-
首先发布您想要优化的内容...
标签: sql oracle performance optimization plsql
有人要求我在不影响功能的情况下提高包性能。如何开始优化?有什么建议
【问题讨论】:
标签: sql oracle performance optimization plsql
为了优化 PL/SQL 程序,您需要知道它们在执行期间花费的时间。
Oracle 提供了两种用于分析 PL/SQL 的工具。第一个是 DBMS_PROFILER。在 Profiler 会话中运行打包过程可以让我们详细了解每个执行的程序行以及在每行上花费了多少时间。这让我们知道了瓶颈在哪里:我们需要关注最耗时的线路。我们只能在我们自己的包上使用它,但它会写入数据库表,因此很容易使用。 Find out more.
在 11g 中,Oracle 还为我们提供了 Hierarchical Profiler,DBMS_HPROF。这做了类似的事情,但它允许我们深入了解其他模式中依赖项的性能;如果您的应用程序有很多模式,这将非常有用。障碍是 Hprofiler 写入文件并使用外部表;有些地方对数据库应用程序写入 OS 文件系统很有趣。无论如何,find out more。
获得个人资料后,您就知道需要从哪里开始调整。 PL/SQL 指南有一整章是关于调优和优化的。 Check it out.
" 不影响功能。"
根据您遇到的瓶颈,您可能需要重写一些代码。为了安全地更改 PL/SQL 的内部工作而不影响外部功能(相同输入的相同结果),您需要一套全面的单元测试。如果您还没有这些,则需要先编写它们。
【讨论】: