要搞明白存储过程是个什么东西,才能知道他是不是个好东西!

在如鹏网论坛上看到杨老师给一个同学回复的有关存储过程的问题:

问题:大量的使用存储过程对系统会有什么影响吗?比如连最简单的增删改都是用存储过程。


回复:
一定要搞明白为什么要有“存储过程”这个东西。如果我们使用程序访问数据库(比如java中的jdbc、.net中的ado.net),正常情况是程序连接数据库服务器,然后向数据库服务器发送执行sql语句。

因为程序和数据库服务器之间的sql执行的过程其实就是网络通讯的过程,而网络通讯是比较慢的。如果一个业务操作要执行很多条sql语句或者执行一个select查询,遍历查询结果的时候又要执行其他sql语句进行其他操作的时候,在程序和数据库服务器之间就会频繁的进行网络交互,这样数据库服务器的压力会比较大,而且速度慢。这时候如果把这些业务逻辑写到一个存储过程,由于存储过程是运行在数据库服务器内的,这样只要程序向数据库服务器请求一次“运行某某存储过程”,剩下的就是在数据库服务器内部执行了,因此运行速度会快一些,而且并发压力会小一些。

明白了“为什么要有存储过程”之后,就很容易回答你的问题了“最简单的增删改都是用存储过程”这个就没必要了。

另外,现在业界的共识是“尽可能的不用存储过程”,因为存储过程在不同数据库中的语法是不一样的,跨数据库移植很麻烦,还有存储过程很难和项目之间完美的进行源码版本管理,因此除了在一些极特殊的情况下,否则不要使用存储过程。

猜你喜欢

转载自blog.csdn.net/xindiai/article/details/80724445