在深入理解MySq之前,我们先理下一些简单的问题
Q:什么是存储过程?(stored procedure)
A:是一段写好的SQL代码,特别的就是它是存在数据库的目录里。所以外部程序可以直接调用数据库里面定义好的存储过程,另外数据库内部的触发器(trigger)、或者其他存储过程也可以调用它。
Q:存储过程有什么好处?有什么坏处?
A:
先看看好处吧:
1、首先在性能上的提高,比起通过应用程序发送sql语句给数据库执行,让数据库自己内部执行存储过程效率更高、速度更快(存储过程将sql编译好后存在数据库目录下);
2、存储过程还减少了应用程序同服务器自己的信息交互频率,可以想象在不是使用存储过程的情况,应用程序需要发送多条sql指令给服务器,而使用存储过程则只要一条调用存储过程的语句,然后获取需要的数据就ok了。
3、存储过程重用性比较高,并且是透明的,因为保存在数据库里面所以对任何应用来说都可以使用。新的应用只需要调用相应的存储过程就可以得到相应的数据服务。
4、存储过程也是种安全的做法,数据库管理员可以对那些没有权限访问数据库中的表格的应用,给他们使用存储过程的权限来获得数据服务,可以看到这个 时候这些存储过程好像我们编程里面的”接口“这个概念。对于安全性要求很高的系统,例如银行,基本上常用的操作都是通过存储过程或者函数来进行的,这样完 全对应用”隐藏“了表格。
当然也有坏处:
1、存储过程会使得数据库占用的系统资源加大(cpu、memory),数据库毕竟主要用来做数据存取的,并不进行复杂的业务逻辑操作。
2、因为存储过程依旧是sql,所以没办法像编程语言那样写出复杂业务逻辑对应的存储过程。
3、存储过程不容易进行调试。
4、存储过程书写及维护难度都比较大。
了解这些优缺点对我们权衡使用存储过程有很大的帮助