存储过程的优缺点

定义:一组为了完成特定功能的sql语句集。

优点
1,执行速度快。存储过程存储在数据库中,一次编译永久有效。相对于一般sql每执行一次就要编译一次而言快。
2,减少网络传输。存储过程直接在数据库上跑,不需要数据传输,限制存储过程的只是硬盘的速度而非网速。
3,可维护性。有些问题直接改存储过程就行,无需编译发布代码了。
4,安全性高。存储过程比较稳定,可以设定权限。
5,可扩展性高。应用程序和数据库编码单独工作,减少了耦合。

缺点
1,开发调试性差。由于IDE问题,存储过程比一般sql调试起来困难许多。
2,可移植性差。sql终归只是结构化查询语言,不是面向对象的,过程的处理非常吃力,对于一些复杂的业务更加困难,同时也限制了应用程序的可移植性。
3,重新编译问题。对于一些参数或结果的变化,需要重新调试编译,比较繁琐。
4,不支持集群。存储过程使得数据库无法水平拓展或数据库切割,,因为切割后存储过程不知道数据在哪个数据库中。

总之,适当运用存储过程可以提高性能,但不应大规模滥用。而且随着众多ORM的出现,存储过程的许多优势已经很不明显了。而且最重要的是,SQL终归只是结构化查询语句,我们不应该用存储过程处理复杂的业务逻辑,它不仅使得我们的代码可读性变差,也违背了SQL的初衷,复杂的业务逻辑还应交给代码处理。阿里手册中也提到严禁使用存储过程,因为其差劲的调试和拓展,以及可移植性。当然猜测可能是用的数据库是MySQL,因为MySQL对存储过程得支持太差,远不如SQL server,

 

引文地址:https://blog.csdn.net/u010796790/article/details/52194842

                  https://www.cnblogs.com/wiggin-Z/p/10614497.html

posted @ 2020-12-25 10:53  lv99  阅读(1137)  评论(0编辑  收藏  举报