且不说Oracle的第三代语言(3GLs),如果对所有SQL和PL/SQL的优秀示例做出完整的论述,大概需要写成一本书——事实上,市面上已经有好几本这样的书出版了,在这里我只会列举一些比较“重量级”的Oracle优秀示例。 在PL/SQL中使用阵列处理是一个很好的做法(如,使用bulk collect和forall)。批量处理能够大大减少PL/SQL语句执行引擎的环境切换次数,从而提高其性能。 另一个优秀示例是把存储过程中的所有代码放入锁定的软件包中,这样可以生成模块单元。
把存储过程放入软件包里可以实现相关程序和功能的分组。当单个包被使用,整个软件包都会载入内存中(内存会启动整个软件包……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
且不说Oracle的第三代语言(3GLs),如果对所有SQL和PL/SQL的优秀示例做出完整的论述,大概需要写成一本书——事实上,市面上已经有好几本这样的书出版了,在这里我只会列举一些比较“重量级”的Oracle优秀示例。
在PL/SQL中使用阵列处理是一个很好的做法(如,使用bulk collect和forall)。批量处理能够大大减少PL/SQL语句执行引擎的环境切换次数,从而提高其性能。
另一个优秀示例是把存储过程中的所有代码放入锁定的软件包中,这样可以生成模块单元。把存储过程放入软件包里可以实现相关程序和功能的分组。当单个包被使用,整个软件包都会载入内存中(内存会启动整个软件包?),把磁碟存取时间减到最少。通过这个方法我们同样可以把整个应用程序包载进内存中,防止发生重新载入和代码解析,从而减少严重影响性能的代码递归。
PL/SQL(和SQL)的另一个优秀示例是使用适当的变量类型(当你需要NUMBER时不要使用VARchar2,反之亦然)。使用不适当的变量(用character跟number进行比较)会导致无用索引。保证变量类型正确的一种方法就是使用%TYPE 和%ROWTYPE。
还有就是永远使用DBMS_PROFILER或使用像Quest Software的Quest Code Tester工具来验证循环逻辑。DBMS_PROFILER是Oracle提供的一个软件包,能够使你的代码生成对每行执行时间及所需时间的追踪。你可以验证循环执行次数应为最少。
你同样应该验证适当的IF-THEN-ELSE结构。我的意思是你应该把最常用的选项放在前面(比如exit test)。这个方法同样使用于CASE结构。
PL/SQL(以及Java、C、C++和其他所有Oracle相关的3GLs)中,另一个更为重要的优秀示例是首先调优SQL。即使是世界上设计最精密的程序,如果其中含有的SQL很差的话,运行起来性能也会不好。Quest的SQL Optimizer、Performance Analyzer、TOAD和SQL Navigator都能够优化SQL。
在测试PL/SQL-SQL代码的时候,应利用匿名PL/SQL块来保证处理环境的相似性。如果你在一个标准的SQL环境里用文字代替绑定变量来进行测试,你所得到的执行计划会不同于当你使用匿名PL/SQL块和绑定变量时得到的执行计划,因此你的调整很可能不能获得很好的结果。使用Quest Code Tester能够保证你能获得你想要的结果。
还有一个良好的编程做法是很好地利用临时表和PL/SQL索引表。不正确地使用”normal”表进行临时储存会降低性能,因此应使用临时表。而当内存空间足够运行PL/SQL表时使用临时表也会大大降低性能。你也可以利用视图来创建中间结果的缓存表。
还有一个很简单易行的优秀示例是在IN OUT和OUT变量上利用NOCOPY。在一个使用IN OUT或OUT的PL/SQL程序中,如果NOCOPY关键字没有包含在其页首的变量声明中,所有的变量都会通过copyout程序传值(传值而非传引用)。而使用NONCOPY,所有通过引用传值,这样做会大大提高运行性能。
最后,还要求所有SQL开发者生成解释执行计划,然后再经由同行评审。在较大的开发计划里,数据库管理员不可能检查所有的代码看是否获得最佳的性能,因此开发者首先对SQL代码性能进行调优是很必要的。只要开发者把SQL的索引功能调优,调整为正确的逻辑和技术,数据库管理员便能够对难以处理的问题代码进行更高级的调优。
作者
相关推荐
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。
-
如何应对Oracle EBS实施中的六个挑战?
在18个月的时间里,Vitamix启动运行了Oracle电子商务套件(E-Business Suite,EBS),而且Vitamix还对诸如Oracle ATG Web Commerce等所有页面属性进行了重新整理,并实现了全球数据中心。
-
Oracle的云产品“砸了自己脚”?
Sparc和Solaris都是Oracle云计划的一部分,但是硬件和支持人员的减少意味着本地Solaris和Sparc将变得更加稀少。
-
2017年3月数据库流行度排行榜 Oracle卫冕之路困难重重
时隔一个月,数据库市场经过一轮“洗牌”,旧的市场格局是否会被打破,曾经占巨大市场份额的企业是否可能失去优势?