存储过程优缺点及使用原则
一.存储过程介绍
存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
二.存储过程优点
1. 速度快。存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2. 写程序简单。采用存储过程调用类,调用任何存储过程都只要1-2行代码。
3. 升级、维护方便。存储过程会使得维护起来更加方便,因为通常修改一个存储过程要比在一个已经发布的组件中修改SQL语句更加方便;
4. 能够缓解网络带宽。因为可以批量执行SQL语句而不是从客户端发送超负载的请求。尤其对于较为复杂的逻辑,减少了网络流量之间的消耗。
5. 可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
6. 增强安全性。
a) 通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问。
b) 提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数)。
c) SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。
三.存储过程缺点
1. 可移植性差。由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。
2. 代码可读性差,相当难维护。
3. 不支持群集
4. 大量采用存储过程进行业务逻辑的开发致命的缺点是很多存储过程不支持面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,从而无法形成通用的可支持复用的业务逻辑框架。
5. 如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。
四.使用原则
1. 当一个业务同时对多个表进行处理的时候采用存储过程比较合适。
2. 复杂的数据处理用存储过程比较合适,如有些报表处理。
3. 多条件多表联合查询,并做分页处理,用存储过程也比较适合。
4. 使用存储过程,等需求变动,需要维护的时候,麻烦就来了。不应该大规模使用。
5. 适当的使用存储过程,能够提高我们SQL查询的性能,以便于提高我们的工作效率。
zhanshenlvbu
2011.8.31
分享到:
相关推荐
### JDBC的优缺点 #### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系...了解这些优缺点有助于开发者更好地利用JDBC,同时也能更有效地解决开发过程中遇到的问题。
### Java:信息、使用技巧和优缺点 #### 信息概览 Java 作为一种跨平台、面向对象的编程语言,自1995年由 Sun Microsystems(现已成为 Oracle Corporation 的一部分)推出以来,在全球范围内获得了广泛的应用和支持...
### AD采样的软件滤波方法及其优缺点 在模拟信号转换为数字信号的过程中,为了提高数据的准确性,减少噪声的影响,通常需要采用各种滤波算法对采集的数据进行处理。本文将详细介绍十种常用的软件滤波方法,包括每种...
存储过程的优缺点 * 触发器的概念、使用场景 SQL语句: * SQL语句的分类:DML、DQL、DDL、TCL * 超键、候选键、主键、外键的概念 * 六种关联查询、子查询的概念和使用场景 SQL优化: * 如何定位和优化SQL语句的...
9. **适当使用子查询和连接操作**:子查询和连接操作都有各自的优缺点,需要根据具体情况进行选择。有时候,子查询可以通过连接操作优化,反之亦然。 10. **监控和调整数据库统计信息**:定期更新数据库统计信息,...
本文将详细介绍三种常见的页面置换算法:FIFO、LRU及其工作原理与优缺点。 1. FIFO(First-In-First-Out)页面置换算法: FIFO算法遵循先进先出的原则,即最早进入内存的页面最先被换出。当需要替换页面时,选择最...
5. **云存储**:云计算环境下的数据存储方式,如Amazon S3、Google Cloud Storage等,以及它们的优缺点。 6. **数据加密**:确保数据安全的重要手段,包括对称加密和非对称加密,以及SSL/TLS等协议的应用。 7. **...
优化存储过程包括合理使用参数化、避免不必要的嵌套和循环,以及考虑存储过程的缓存策略。 4. **视图和联接优化**:视图可以简化查询,但过度使用可能增加查询复杂性。理解如何有效使用视图,以及优化联接操作(如...
还讨论了数据库的归一化与反归一化的优缺点,以及如何基于性能和扩展性的需要来进行设计。InnoDB的change buffering特性被提及,它能够减少磁盘I/O并提升插入性能。 文章还指出了数据访问层、RPC服务等基础服务的...
5. 存储过程的优缺点是什么? 存储过程的优点是可以提高数据处理效率和安全性,但是缺点是可能会增加数据库系统的复杂度和维护难度。 6. 存储过程与函数的区别是什么? 存储过程和函数都是数据库中的一种程序单元...
#### 二、自动布线的优缺点及模拟电路布线注意事项 在PCB设计过程中,自动布线工具因其高效性而被广泛使用。然而,在特定类型的设计中,如模拟电路、混合信号电路或高速电路中,自动布线可能会带来潜在的问题。 - *...
- **类型库**:存储了关于组件的所有类型信息,如类和接口定义。 - **注册**:将组件的信息注册到系统中,以便其他组件能够发现和使用这些组件。 - **版本管理**:确保了不同版本的组件之间的兼容性。 ##### COM...
- **对比分析**: 对比不同类型的存储设备,在性能、成本、可扩展性等方面的优缺点。 - **应用场景**: 根据实际需求选择最适合的存储解决方案。 #### 二、vSphere与SAN配合使用 **2.1 将ESXi与SAN配合使用概览** - *...
使用rand()函数随机产生页面号,用数组装入页面号,模拟页面调入内存中发生页面置换的过程。 整个过程,都是使用数组来实现每个算法,模拟队列,模拟堆栈的功能,实现每一个置换算法。 页面置换算法 最佳置换算法...
通过这样的模拟,学生可以深入理解页式存储管理的工作原理,以及不同页面置换算法的优缺点。例如,FIFO简单但可能导致异常,LRU通常表现较好但实现复杂,而OPT是理论上的最优但不可行。这种实践性的学习方式有助于...
* Access支持的各种数据类型及其优缺点 * 如何选择合适的数据类型来存储不同类型的数据 知识点六:数据库系统的安全性和可靠性 * 数据库系统的安全性和可靠性 * 数据备份、恢复和权限管理等方面的深入剖析 * ...
参数传递的方式可以是传值、传引用或传地址等,每种方式都有其优缺点,影响着性能和内存使用。 总的来说,理解和掌握目标程序运行时的存储组织对于编写高效、内存安全的程序至关重要。不同的语言和环境可能有不同的...
12.5.1 创建默认值 12.5.2 默认值的绑定与松绑 12.6 小结第5篇 T-SQL高级编程篇第13章 存储过程 13.1 存储过程概述 13.1.1 存储过程的基本概念 13.1.2 存储过程的优缺点 13.2 存储过程中常用的流控制语句 13.2.1 IF....
数据流图由数据流、加工、数据存储和外部实体四部分组成,通过它们可以清晰地表示出系统的输入、处理、输出和数据存储的逻辑关系。结构化分析还包括编写详细的业务流程描述(例如,用例图或活动图)和数据字典,以...