暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
PLSQL:停止犯同样的性能错误.docx
96
5页
1次
2022-07-14
5墨值下载
PL/SQL:停止犯同样的性能错误
PL/SQL 很棒,但与任何编程语言一样,它也可能被滥用。本文重点介绍了在 PL/SQL 中进行开发时常见的性能错误,将本应是优雅
的解决方案变成了资源消耗。这在很大程度上是一个概述,但每个部分都包含指向本网站上相关文章的链接,这些文章更深入地讨论
了该主题,包括示例代码,因此请将此视为要避免的事情的清单,这将对您有所帮助从您的 PL/SQL 中获得最佳性能。
当你可以使用 SQL 时停止使用 PL/SQL
停止避免批量绑定
停止使用传递值 ( NOCOPY )
停止使用错误的数据类型
快速点
如果只有一种“最佳”方法,Oracle 默认会这样做。在阅读这些建议时记住这一点很重要。总会有特定方法不是最佳的情况。链接的
文章将为您提供有关此的更多背景信息。
当你可以使用 SQL 时停止使用 PL/SQL
PL/SQL 文档第一章的第一句陈述如下。
PL/SQL SQL Oracle 过程扩展,是一种可移植的高性能事务处理语言。”
所以 PL/SQL SQL 的扩展,而不是它的替代品。在大多数情况下,纯 SQL 解决方案的性能将优于由 SQL PL/SQL 组合而成的
解决方案。请记住,数据库旨在处理数据集。一旦您开始以逐行(或缓慢)的方式处理数据,您就停止了数据库做它最擅长的事情。
考虑到这一点,PL/SQL 程序员的目标应该是成为懂一点 PL/SQL SQL 专家,而不是懂一点 SQL PL/SQL 专家。
在过去的 20 年中,SQL 有了很大的发展。分析函数 SQL/XML
等特性的引入意味着您可以直接从 SQL 执行非常复杂的任务。以
下几点描述了人们在 SQL 更合适时使用 PL/SQL 的一些常见情况。
UTL_FILE 如果可以外部表,请停止使用读取文本文件。使用 UTL_FILE 包从平面文件中读取数据效率非常低。自 Oracle 7
来,人们一直在使用 SQL*Loader 来提高性能,但从 Oracle 9i 开始,推荐的从平面文件读取数据的方法是使用外部表。默
认情况下不仅效率更高,而且它很容易并行读取数据,并允许预处理器命令在读取文件之前执行动态压缩文件类的任
务。在许多情况下,您的 PL/SQL 加载过程可以用一 INSERT ... SELECT 语句替,该语句的数据来源于外部表。
如果可以使用 MERGE 语句 ,请停止编 PL/SQL 合并。使用 PL/SQL 合并或更大量数据是对资源的浪费。相,您
应该使用该 MERGE 语句在单个 DML 语句中执行操作。它不仅更快,而且看起来更单,并且很容易并行行。
停止手动编码多表入。当一个动作可以在单个多表入中执行时,为什么要向多个 DML 语句由于 Oracle 9i
多表入提供了一种灵活的方式来减少往返次数。
当您可以使用
DML 错误记 ( DBMS_ERRLOG) DML 中的故障时,请停止使用批量绑定 (FORALL) 。在些情况下,最
明显题解决方案是 DML 语句(INSERT ... SELECTUPDATEDELETE),但您可以选择避免 DML,因为它对常的
应方式。默认情况下,如果 DML 语句中的单行引发常,DML 语句成的所有工作都会回滚。在过去,这意味着在
逻辑上是影响多行的单个 DML 语句的操作必须使用 FORALL ... SAVE EXCEPTIONS 构造,因为担心单个常会破坏整个过程。
Oracle 10g 2 引入了 DML 错误日志,允许复使用单个 DML 语句来替要的批量绑定操作
of 5
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜