黑暗角落

黑暗角落
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

存储过程经验二

Posted on 2004-09-06 14:40  gz.net  阅读(1899)  评论(2编辑  收藏  举报

1.       结果的三种获得方法:可带回值的参数,return 值,select 返回记录集

2.       编写过程

1)  参数

2)  设置环境:显示设置一些环境开关:如加锁方法、set nocount on 等,否则因为用户环境不同,影响运行效果。

3)  框架:构思结构

4)  变量:统一放在前面,并注释。

5)  注释:注释和代码同步完成,保持一致。

6)  编写

7)  讨论记录

8)  测试

3.       必须考虑的问题

3.1     可读性

1)  逻辑清晰

2)  语句不要过于复杂,靠产生临时表过渡

3)  注释

4)  一屏可视,便于思考

5)  艺术感

3.2     效率

一种方法和语句的使用,必须考虑它的执行效率。注意以下问题:

1)  回避not in查询

2)  游标嵌套慎用

3)  使用索引:善于用索引,大大提高速度,在语句中有时需要显式说明。

4)  事务嵌套慎用。

结存程序一般30分钟以上,主要原因就是使用了not in 查询、游标嵌套、没有用索引。改造后同样数据量9秒就能完成。

4.       事务

1)  保持一致性所必需,必须有意识的考虑何时必须用事务。

2)  注意加锁特性,加锁属性开关状态。辽阳的例子,informix缺省加锁返回机制没有注意,造成偶尔死机,问题非常隐蔽。

3)  处理不当会带来系统死锁。

4)  仔细测试,否则的灾难将难以挽回。

5)  大量语句的事务推荐方法,将存储过程嵌在事务中,这样可以防止意外出错,造成死锁。见附件1

5.       测试

5.1     测试环境的搭建,要保存一个对应的程序,因为不会轻易结束。见附件3

5.2     编写和测试花一样的时间。

5.3     任何改动,都要测试。

5.4     叫真,不要想当然,因为还有系统软件的问题。如,错误号状态,是最后一个语句的错误,Sql 7.0bug : 语句“if @@Error <> 0,永远得不到想象的结果。

5.5     调式工具