我被要求在不影响功能的情况下提高包性能。如何从优化开始?任何建议
答案 0 :(得分:1)
为了优化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的内部工作方式而不影响外部功能(相同输入的结果相同),您需要一组全面的单元测试。如果你还没有这些,你需要先写它们。