web项目中应不应该使用大量存储过程

2019-09-26 01:47:54  卢浮宫  阅读量:233  版权声明:本文为站长原创文章,转载请写明出处


一、前言

    最近遇到一个业务场景,代码实现需要多次业务操作。如果使用存储过程则可以一次调用完成相对复杂的业务操作。

二、你使用过存储过程吗

    之前公司是做OA的,项目中许多业务操作都是使用的存储过程实现。于是也使用了一年多的存储过程。

    当时的感觉就是效率:一些复杂的业务操作再几十行的存储过程中得到完美实践,要是换到程序中可能就是多少倍的代码工作量了。

    但是也有不舒服的时候:数据库变动导致牵涉所有的存储过程变动。

    总之:就当时来说觉得使用存储过程还是挺好的吧。

三、为什么阿里等企业不推荐使用存储过程

    因为最近的一些业务需要,犹豫要不要使用一些存储过程。猛然看到下面这个图

        

    这个是阿里巴巴java开发技术手册中明确提到的。于是乎赶紧去详细了解存储过程再使用中的利弊。

四、搜罗网上各种信息得出如下

    1、先说下存储过程的好处

        ①存储过程预编译,不需要解析,执行速度快,

        ②避免了sql注入和表字段,表结构的暴露

        ③可以通过少量的sql完成较多的业务处理

    2、存储过程的缺点

        业务逻辑封装在数据库中有明显的缺陷

            ①oracle移植到mysql由于语法不一致导致重写

            ②数据库结构改动,牵一发动所有存储过程

 五、为什么还会有企业在普遍使用大量的存储过程(网络资源总结)

    1、传统通信,金融对安全的需求较高:

        存储过程避免暴露一些信息和sql注入

    2、稳定

        老生常谈,这类项目稳定是第一位的。数据库变动不大,只要数据库不崩就不会有问题。

    3、充分利用数据库价值

        这类应用部署在政府机关等地,有钱,机房稳定,oracle也给力[坏笑]

    4、有钱

        从硬件到网络投入较多,人家就是有资源优势

六、总结

    1、不能一概而论,要看具体业务场景

    2、如果是通信、金融、国企类项目。追求系统安全,稳定,高速,且能提供一流的硬件支出,使用存储过程无可厚非。

    3、如果是互联网项目(目前分布式居多),业务变动大,流动性强,就尽量避免过多使用存储过程。

最新评论: