快速业务通道

PL/SQL用户指南与参考--PL/SQL应用程序性能调优

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-18
VARCHAR二(长度>=2000)变量,PL/SQL动态分配内存储器来寄存现实值,但至于VARCHAR二(长度<2000)变量,PL/SQL能之前分配足够的内存储器。之所以,如其我们把一样一个500字节的值放入一个VARCHAR二(2000)和一个VARCHAR二(1999)变量中,后者会多占用1499个字节的内存储器。

&#8226;乱用PL/SQL程序中的共享内存储器
第一回调用封装子程序时,整个包会被加载到共享内存储器池。之所以,之后调用包内相干子程序时,就不再亟需读取磁盘了,这么会加紧我们的代码会实施速度。但是,如其包从内存储器中扫除以后,我们在从新引述它的时分,就必须从新加载它。

我们可以经过正确地设立共享内存储器池大小来改进性能。一定要准保共享内存储器有足够空间来寄存被频繁施用的包,但空间也不用过大,省得铺张内存储器。

&#8226;护持包(Pinned Packages)
此外一个改进性能的步骤便是把频繁运用的包护持到共享内存储器池中。应一个包被护持下来后,它就不会被Oracle正常所采取的起码日前施用(LRU) 算法扫除。甭管池有多满或是我们访问包有何等频繁,包始终会被保持在池中的。我们可以利用系统包DBMS_SHARED_POOL把包护持下来。

&#8226;可接续重用包
为了相助我们治理内存储器的运用,PL/SQL提供了编译指示SERIALLY_REUSABLE,它能让我们把某些包标记为可接续重用的 (serially reusable)。如其一个包的状态只在服务器呼叫时间内所急需,那么我们就可以对这个包应用这个标记了(比如,一个对服务器的OCI调用或是服务器对服务器RPC)。

关于这么的包所分配的内存储器会放到系统大局区(SGA)中,而不是分配到独力的用户所施用的用户大局区(UGA)。那样,包的工作区就可以被重复运用。应服务器调用完结的时分,内存储器就会被归还共享池。次次包被重用时,它的公共变量就会被初始化作它们的默认值或NULL。

一个包所需的工作区最大个数乃是目前运用这个包的用户数,这个数目字一般要小于登录用户数。SGA内存储器的增长量要大于UGA内存储器的减缩量。而且,如其Oracle要回收SGA内存储器的话,它就会把没施用的工作区开展逾期处置。

关于没包体的包来说,我们可以应用在包说明中施用下边语法编纂编译指示:

PRAGMA SERIALLY_REUSABLE;

至于有包体的包来说,我们务必在说明和包体中编纂编译指示。我们不能只在包体中编纂编译指示。底下的例证演练了何以在一个接续重用包中应用一个公共变量:

CREATE PACKAGE pkg一 IS
PRAGMA SERIALLY_REUSABLE

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号