OraclePLSQL规范、性能.ppt
《OraclePLSQL规范、性能.ppt》由会员分享,可在线阅读,更多相关《OraclePLSQL规范、性能.ppt(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、日程PLSQL 性能规范性能规范PLSQL 程序规范程序规范PLSQL程序规范概述PLSQL程序规范的目的:程序规范的目的:1.增强程序可读性。增强程序可读性。2.降低程序降低程序BUG概率。概率。3.程序一致性。程序一致性。4.增强程序可维护性。增强程序可维护性。5.提升程序性能。提升程序性能。PLSQL程序规范:命名规范1.程序包命名:必须以模块名开头(例如:客户化程序用CUX_开头),用_PKG结尾 示例:CUX_PAYROLL_PUBLIC_PKG(含义:客户化的薪资部分公用包)2.函数命名:一般用GET_开头,用来描述通过函数可以得到一个返回值 示例:GET_EMPLOYEE_SAL
2、ARY(含义:获取员工薪酬值)3.过程命名:一般以体现具体用途的英语单词或者缩写来命名,没有其他特殊要求 示例:UPDATE_EMPLOYEE_DEPT_INFO(含义:更新员工部门信息)4.别名:一般别名尽量使用表名的含义缩写或者用表被_符号分隔的第一字母的拼合作为别名 示例:PS_EMPLOYEE_PAYMENT_HISTORY PEPH PS_EMPLOYEE_PAYMENT_HISTORY PAY_HIS4.参数命名:函数的参数命名以P_开头,例如:P_EMPLOYEE_ID NUMBER 过程的参数命名中,输入参数以P_开头,例如:P_EMPLOYEE_ID IN NUMBER 输出
3、参数以X_开头,例如:X_RESULT OUT VARCHAR2 输入/输出参数以P_开头,例如:P_EMPLOYEE_STATUS 好的命名规范,可以明显的增强程序的可读性和可维护性。好的命名规范,可以明显的增强程序的可读性和可维护性。PLSQL程序,无论是程序名称还是变量名称,总体遵循简单明了的基本原则,程序,无论是程序名称还是变量名称,总体遵循简单明了的基本原则,使得程序名或者变量名称具有相关的含义。使得程序名或者变量名称具有相关的含义。PLSQL程序规范:命名规范变量类型变量类型命名规范命名规范示例示例全局变量G_开头G_SBU_ID普通变量V_开头V_EMPLOYEE_NAME例外变
4、量E_开头E_UPDATE_VALUE记录变量REC_开头REC_PAYROLL_DATA游标变量CUR_开头CUR_EMPLOYEE_PAYMENT数组变量V_开头,_ARRAY结尾V_EMPLOYEE_ARRAY5.5.变量命名变量命名:不同类型的变量,遵循不同的命名规则不同类型的变量,遵循不同的命名规则PLSQL程序规范:大小写规范使用统一标准的大小写规范,可以明显的增强程序的可读性、以及程序的美观使用统一标准的大小写规范,可以明显的增强程序的可读性、以及程序的美观程度。程度。注:注:1.1.使用使用PL/SQL DEVELOPERPL/SQL DEVELOPER工具,可以设置自动大小写
5、功能工具,可以设置自动大小写功能 2.2.原则上原则上SQLSQL代码中保持一致的风格就可以,不强求一定大写,或者一定小写,尽量不要出现非代码中保持一致的风格就可以,不强求一定大写,或者一定小写,尽量不要出现非数据库保留字之外的代码不统一的情况。数据库保留字之外的代码不统一的情况。分类分类大小写大小写说明说明程序包名称大写过程名称大写函数名称大写参数名称大写变量名称大写数据库保留字大写例如:FROM,WHERE表名,条件,以及其他小写PLSQL程序规范:代码对齐规范使用良好的对齐规范,可以明显的增强程序的可读性、以及程序的美观使用良好的对齐规范,可以明显的增强程序的可读性、以及程序的美观程度,
6、同时可以减少程序出错的概率,增强可维护性。程度,同时可以减少程序出错的概率,增强可维护性。总体来说,对齐要基于程序层次情况,使用首尾对齐原则,如下例所示:总体来说,对齐要基于程序层次情况,使用首尾对齐原则,如下例所示:FUNCTION GET_EMPLOYEE_SALARY(P_EMPLOYEE_ID NUMBER,P_MONTH NUMBER)RETURN NUMVER IS V_SALARY NUMBER;CURSOR CUR_EMPLOYEE_PAYROLL_ELEMENT IS SELECT payroll_element_code,base_salary FROM ps_payrol
7、l_elements ppe WHERE ppe.EMPLOYEE_id=p_EMPLOYEE_id AND ppe.payment_month=p_month;BEGIN V_SALARY:=0;FOR C1 IN CUR_EMPLOYEE_PAYMENT_ELEMENT LOOP IF C1.base_salary is not null then V_SALARY:=V_SALARY+C1.base_salary;END IF;END LOOP;END;RETURN V_SALARY_AMOUNT;END GET_EMPLOYEE_SALARY;PLSQL程序规范:注释信息规范2.程序代
8、码注释规范:2.1 单行代码禁用,可以用PLSQL屏蔽符:-2.2 多行,大范围代码禁用,必须使用PLSQL大范围屏蔽符:/*需要屏蔽的内容*/3.程序关键点注释,程序的一些关键点的注释可以很清晰的分出程序的结构,增强程序的逻辑性和可读性。例如:IF V_RESULT=S THEN -如果运行成功,则.ELSIF V_RESULT=E THEN -如果运行失败,则.ELSIF V_RESULT=W THEN -如果运行警告,则.END IF;注释信息可以很好的描述程序的功能,为后续的维护带来非常有价值的基础注释信息可以很好的描述程序的功能,为后续的维护带来非常有价值的基础信息,原则要求程序包各
9、个部分都必须有相应的注释信息信息,原则要求程序包各个部分都必须有相应的注释信息PLSQL程序规范:数据库对象创建规范程序开发中,不可避免的会遇到创建客户化的数据库对象,为更好的管理数据程序开发中,不可避免的会遇到创建客户化的数据库对象,为更好的管理数据库对象,需要遵循数据库对象创建规范:库对象,需要遵循数据库对象创建规范:1.数据库对象包括:Table,Index,View,Package,Procedure,Function,Trigger,Job2.尽可能少的创建数据库对象。除非程序必须使用或可以提升程序性能的情况,一般都不要去创建数据库对象。数据库对象3.数据库对象如果需要占用存储空间的
10、(Table,Index,物化视图),都必须创建到规定的表空间中。不能随意存放。4.所有数据库对象的创建/变更,都需要有明确的文件记录。5.所有应用系统自创建的标准的数据库对象,都尽可能的不去做变动,以免影响性能或者导致未知问题。6.数据库对象的命名要规范。PLSQL程序规范:程序管理规范客户化开发的客户化开发的PLSQLPLSQL程序,需要规范的管理,以更好的维护数据库以及程序程序,需要规范的管理,以更好的维护数据库以及程序1.客户化程序需要有文件记录2.客户化procedure,function必须放在程序包中,不要单独存在数据库中3.客户化的公用的procedure,function尽量
11、放在公用程序包中,不要建太多 的程序包。4.不能随意创建客户化的PLSQL程序,能少创建就尽量少创建。5.定期检查客户化程序包的状态,保持程序包都是正常的可用状态。日程PLSQL 性能规范性能规范PLSQL 程序规范程序规范PLSQL性能规范 -性能影响分析Oracle数据库的性能与数据库的性能与PLSQL代码的性能有非常直接的关系。在大量的客户代码的性能有非常直接的关系。在大量的客户化程序中,不可避免的会存在客户化代码的性能问题。化程序中,不可避免的会存在客户化代码的性能问题。PLSQL代码的性能影代码的性能影响表现在如下几个方面:响表现在如下几个方面:1.程序本身运行效率低下,由于本身的程
12、序性能问题,导致运行时间长。2.程序运行导致的数据库读写I/O巨大,直接导致数据库的性能下降。3.程序长时间运行,占有大片内存不释放,导致其他程序运行性能下降。4.程序长时间运行,占有特点表或者特点数据的控制权,导致其他程序无法有效获得数据控制权,而使得其他程序长时间处于等待状态。5.程序本身性能差,长时间运行导致回滚段过旧错误。6.程序大量排序操作,且长时间运行不释放资源,导致临时表空间无法正常释放空间给其他程序进行排序,进而导致临时表空间大量增长。PLSQL性能规范 -性能规范概述PLSQL代码性能的好坏,与下列因素有着直接关系代码性能的好坏,与下列因素有着直接关系1.SQL程序开发的理念
13、 程序开发过程中,始终要保持一个良好的程序员态度,坚持用做到最好,最完美的态度来完成程序的开发。在每一段SQL定性之前,都要对性能进行分析,优化。让程序达到一个最佳性能状态。2.SQL程序的结构设计 在程序开发之前,一定要先做好程序结构的设计,不要盲目的进行开发,从而导致代码臃肿不合理的情况发生。在经过程序结构设计之后,程序开发就会有很清晰明确的设计蓝图,在最佳的路径里完成的代码一般都能有比较好的性能基础。3.SQL代码语句的规范 程序开发过程中,养成一个良好的性能关注习惯,每一个SQL语句都多考虑性能情况。经过长期的习惯养成之后,写出的SQL代码自然而然的就是一个性能比较好的结果。PLSQL
14、性能规范 -开发理念程序组成部分以及所占比例:程序组成部分以及所占比例:组成部分组成部分所占比所占比例例解释解释正确结果40%结果正确是前提良好的性能(当前以及可预计的未来时间段)30%性能控制程序的生命期良好的程序规范20%程序的维护性,可读性良好的程序结构10%程序可升级性PLSQL性能规范 -程序结构良好的程序结构,可以是程序有一个好的性能基础,另外也能让后续的变更良好的程序结构,可以是程序有一个好的性能基础,另外也能让后续的变更更加灵活。基本的结构概念如下:更加灵活。基本的结构概念如下:1.小步快跑原则。尽量不要使用一个单一的超级大超级复杂的SQL代码去实现复杂的功能。2.结构简单清晰
15、。尽量是程序的结构看起来易懂,清晰,简单。不要设计只有自己能看懂的程序。3.变量定义不要过多,不要太多重复,尽量使用可以重用的变量(绑定变量可以提高性能)。4.程序结构严谨,过程有输入参数就需要有输出参数返回状态,有正确完善的异常处理机制。5.增加程序的重用性,对于使用次数多的Procedure,Function,尽量做到能够共享,且有好的运行性能。6.对于大批量数据处理的程序,良好的COMMIT/ROLLBACK机制。7.对于取出的大批量数据,尽量保存在内存中,不要多次重复读取大批量数据。8.适当使用临时表作为数据中转池。PLSQL性能规范 -代码语句规范良好的代码语句规范,可以尽可能的减少
16、对数据表的全表扫描,尽可能好的良好的代码语句规范,可以尽可能的减少对数据表的全表扫描,尽可能好的使用索引,从而使用最优的执行计划。使用索引,从而使用最优的执行计划。执行计划的好坏直接影响执行计划的好坏直接影响SQL的执行性能。的执行性能。在不同的数据库优化器情况下,SQL优化的方法有很多不同的地方。在Oracle数据库10g之前的版本中(7-9i)主要使用RBO优化器(基于规则的优化器)。在Oracle数据库10g之后的版本,Oracle数据库基本放弃RBO优化器,而全面使用CBO优化器(基于成本的优化器)。CBO优化器的推广及使用,使得程序员的代码水平对程序性能的影响降到最低水平,数据库本身
17、基于成本的优化器机制,会自动判断访问的数据表的访问成本,从而得出Oracle数据库本身认为最优的执行计划。目前10g之后版本的数据库已经成为主流数据库平台,9i以及之前版本的数据库用户已经很少或者已经升级到了10g和之后版本。因此后续我们所讲的SQL性能优化方面的技巧都是基于CBO优化器。而基于RBO的优化器的优化技巧不做讲述。RBO:Rule-Based Optimizer CBO:Cost-Based OptimizerPLSQL性能规范 -代码语句规范 子查询在在SQL中经常会有机会使用子查询的方式来得到某一个值,例如汇总值。而中经常会有机会使用子查询的方式来得到某一个值,例如汇总值。而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OraclePLSQL 规范 性能
限制150内