mysql存储过程已被视为应用程序通过使用编码方法或“过程”访问和操作数据库信息的事实标准。这主要是由于它们为开发人员提供的:将SQL的基于集合的功能与代码开发的迭代和条件处理控制相结合的机会。开发人员对此非常高兴;最后,开发人员可以利用以下优势,而不是编写内联SQL然后尝试从代码中操作数据:
一、熟悉的编码原则
1、迭代循环
2、条件句
3、方法调用(存储过程本身被构建并且类似地被称为方法)
二、一次一地处理
1、现在,SQL 代码的各个部分可以封装到命名方法块中,而不是将内联 SQL 代码分布在整个应用程序中,这些方法都可以在一个位置2、所有复杂的数据处理现在都可以在服务器上执行,允(数据库的“存储过程”文件夹)中轻松识别和访问。
当然,仅仅因为某些东西很流行并不总是意味着它在所有情况下都是最好的工具。Stored Procedures的效率、功效和实用性,就像所有编程语言和平台的实现一样,都取决于客户端的需求和应用程序的后续架构。
下面,小编就给大家分析下mysql存储过程的优点与缺点。
一、使用mysql存储过程的优点
存储过程如此流行并得到如此广泛的使用,因此人们对关系数据库管理系统 (RDBMS)抱有期望,以至于MySQL最终屈服于开发人员的同行压力,并在其非常流行的开源数据库中添加了利用存储过程的能力。
1、可维护性:由于脚本位于同一个位置,因此根据模式更改更新和跟踪依赖关系变得更加容易。
2、测试:可以独立于应用程序进行测试。
3、业务规则隔离:将存储过程放在一个位置意味着不会混淆将业务规则分布在应用程序中可能不同的代码文件上。
4、速度/优化:存储过程缓存在服务器上;无需运行应用程序即可轻松查看流程的执行计划。
5、基于集合的处理的利用:SQL的强大之处在于它能够快速高效地对大量数据执行基于集合的处理;编码等价物通常是迭代循环,通常要慢得多。
6、安全:通过数据库中定义的角色限制对表的直接访问;为底层数据结构提供一个“接口”,以便屏蔽所有实现甚至数据本身;仅保护数据和访问它的代码比在应用程序代码本身中应用该安全性更容易。
二、使用mysql存储过程的缺点
存储过程肯定有一些缺点,使它们无法成为应用程序数据库访问的一站式解决方案。
1、有限的编码功能:存储过程代码不如应用程序代码健壮,特别是在循环方面(更不用说迭代构造,如游标,速度慢且处理器密集)。
2、可移植性:利用用于创建它们的RDBMS的复杂核心功能的复杂存储过程并不总是移植到同一数据库的升级版本。如果从一种数据库类型 (Oracle) 迁移到另一种数据库类型 (MS SQL Server),则尤其如此。
3、测试:直到运行时才生成处理存储过程的任何数据错误。
4、业务规则的位置:由于SP不容易分组/封装在单个文件中,这也意味着业务规则分布在不同的存储过程中。应用程序代码架构有助于确保业务规则封装在单个对象中。普遍认为业务规则/逻辑不应放在数据层中
5、基于集合的处理的利用
维护不够复杂的存储过程会导致过多的开销。因此,普遍的共识是简单的 SELECT 语句不应绑定到存储过程,而应作为内联SQL实现。
6、成本
根据我们的公司结构和开发关注点分离,存储过程开发可能需要专门的数据库开发人员。有些企业根本不允许开发人员访问数据库,而是需要一个单独的DBA。这将自动产生额外费用。一些公司认为(有时是真的,但并非总是如此)DBA比应用程序开发人员更像是SQL专家,因此会编写更好的存储过程。在这种情况下,需要DBA形式的额外开发人员。
以上是mysql存储过程的优点与缺点的介绍。希望能帮助到大家参考!
领取专属 10元无门槛券
私享最新 技术干货