【再回首:数据库篇】Oracle 开发雷区

前言

讲完了SQL语句的优化,其实还有一个存储过程,也是可以用来提高查询效率的,但是存储过程又有其弊端。今天就从使用存储过程、触发器及函数的使用讲起。

存储过程、函数及触发器的使用

适量但尽量少使用存储过程、函数;触发器应避免使用。使用存储过程、函数、触发器的影响。

(1) 可以减少数据库与客户端的交互,提高性能;
(2) 有的数据库还对他们进行了某种程度的编译,在执行的时候,不用再对其中的SQL等语句进行解析,从而提高速度。
(3) 如果有多个应用,使用了不同的开发语言,当有某些关键的或者复杂逻辑希望共享,则可以考虑使用存储过程或者函数。因为存储过程等在数据库一级是共享的;
(4) 增强了应用对数据库的依赖,如果打算将来移植数据库的话,使用得越多,则移植的困难越大;数据库中的业务逻辑越多(存储过程等),应用以及存储过程等的维护难度也会增大;
(5) 通常存储过程等没有面向对象的特性,不容易设计出易于扩展的结构。当存储过程比较复杂时,或者它们相互间的调用关系比较复杂时,可能难于维护;

综述

在数据库开发过程中,要具体问题具体分析,实事求是,一切从实际出发。根据表的特征选择合适的方法去提高效率,简化过程。不管是索引还是存储过程或者是函数都是需要适当使用的,滥用也会导致严重的问题。且存储过程和函数,在进行数据库更新时,也需要进行更新。

Oracle开发雷区

一、适用范围

适用于统计分析系统,不适用于在线交易系统;

二、版本合规

1、禁止应用的数据库版本不符合公司软件版本要求;
2、禁止数据库的字符集不符合数据库开发设计规范;

三、安全合规

1、禁止应用运行不支持公司数据库权限分离规范;
2、禁止应用连接数据库硬编码在程序代码中;
3、禁止应用将连接到数据库的口令明文写在配置文件中;

四、数据字典合规

1、禁止开发过程中无数据字典的设计;
2、禁止开发过程中数据字典调整不经过开发DBA审核和批准;

五、表设计合规

1、禁止表列数据类型选择低效、过时、不规范的数据类型,如确实需要必须经过开发DBA审核和批准;
2、禁止存放变长字符串值列设计为char类型,char(100)以上使用varchar2代替;
3、禁止参与业务交易的大表无分区设计、无数据归档方案设计;(大表定义:记录数超过2千万或表数据占用空间超过10GB);
4、禁止程序运行过程中创建正式表和删除正式表,如在批处理中需要可以用存储过程来truncate指定的一张表;

六、索引设计合规

1、禁止业务处理表无主键索引;
2、禁止组合索引的列数量超过三个或索引列数量超过三个未经过开发DBA审核;
3、禁止表索引数量超过五个或索引数量超过五个未经过开发DBA审核;
4、禁止索引在交易时间的并行度不为0;

七、SQL语句合规

1、禁止SQL语句不使用绑定变量或不使用绑定变量未经过开发DBA审核;
2、禁止用select * from。select语句中写出必要的要选择的全部列名;
3、禁止使用select * … for update语句;
4、禁止写复杂的SQL语句;(复杂SQL定义标准: SQL语句长度大于等于4000字符或SQL语句中使用到五表及以上的SQL);
5、禁止大表相关的SQL语句未经过开发DBA对执行计划的验证和确认;
6、禁止出现两个以上大表关联的SQL语句,防止索引对象失效或者执行计划改变导致系统的性能直接失控;

八、其他

1、禁止直接修改char类型字段的长度,如确实必须将其改成varchar2类型,避免出现补充空格的情况;
2、禁止无统一出错处理机制;禁止出现程序结束不提交事务;禁止出现程序异常或失败不回滚事务;
3、禁止单条SQL语句一次性实时返回超过20000条以上的数据结果;
4、禁止使用DBLink、触发器、物化视图;
5、禁止使用SQL语句进行复杂计算;

结语

其实你少的不是开发的细心,少的是…在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值