化、触发器编写规范化、C和Java等宿主语言编写规范化等。同样地,这些规范化不能直接提
升应用性能,但能确保功能的准确实现,也对应用软件编写的规范化、可读性、可维护性、可
管理性等起到了非常大的作用。
安全性、出错处理等方面编写规范
该规范还在应用程序的安全性、出错处理等方面制定了规范化,例如在安全性方面规定不
在应用程序中进行DDL和DCL操作,而是由DBA在后台进行此类操作;在SQL语句中避免在数据对
象前添加属主信息等。在出错处理方面则规定了每条SQL语句都应检查SQLCODE和SQLERRM;在
应用程序中都应编写Exception出错处理段等。
针对联机交易和批处理应用的不同技术运用规范
该规范还针对联机交易和批处理两类不同应用系统特点,提出了不同的编程规范。针对联
机交易应用,该规范提出了通过rownum伪列函数限制返回记录数;尽可能避免使用GROUP BY、
ORDER BY、DISTINCT或UNION操作,或者设置一个保存中间层次统计数据的临时表;在显示之
前进行COMMIT,使事务模块化,避免锁的产生;把级联DELETE减到最小;降低过于活跃的数据
区域带来的负面影响;有效使用Sequence;通过WHERE CURRENT OF游标选项进行删除和修改而
不是用独立的UPDATE和DELETE语句,等等。
针对批处理应用,该规范提出了谨慎使用并行处理技术;慎重使用LOCK TABLE;在批处理
修改程序中周期性地进行COMMIT;合理设计满足业务逻辑的事务;合理设计批量业务逻辑,确
保全部进行批量重跑,或者从某个节点开始批量续跑。
提升性能的规范
该规范非常重视应用软件性能的提升,为此制定了很多确保性能的开发规范,包括充分使
用绑定变量;充分运用Oracle内置的方法和函数,而不要在应用程序中实现这些功能;慎重使
用动态SQL语句;避免不同类型的变量比较和运算;合理编写exist、in、not exist、not in
等子查询;尽可能降低表的连接量;索引设计规范;防止索引失效的编写规范;算数运算编写
规范;FROM和WHERE中的顺序编写规范;限制被选择的数据;使用FETCH…BULK COLLECT INTO
语句批量提取规范;返回单行值的SELECT和游标编写规范;排序操作编写规范;排序操作中控
制NULL值顺序的编写规范;UNION与多列谓词‘OR’的编写规范,等等。
2. 对客户现有开发规范的认知
众所周知,IT系统可分为功能性和非功能性两个领域的实现目标,所谓功能性目标就是通
过应用开发实现业务需求,而非功能性目标则包括高性能、高可用性、可管理性、扩展性、安
全性等目标。上述客户现有规范中的书写规范、技术运用规范等应该属于功能性目标范畴,而
在非功能性目标方面,客户对安全、管理等方面目标显然没有对性能目标的优先级那么高。
评论