2019-09-25 17:47:54 卢浮宫 版权声明:本文为站长原创文章,转载请写明出处
最近遇到一个业务场景,代码实现需要多次业务操作。如果使用存储过程则可以一次调用完成相对复杂的业务操作。
但是,要不要使用存储过程?使用存储过程有哪些不好的地方吗?今天我们就这个问题做一下简单的剖析。
1、之前公司是做OA的,项目中许多业务操作都是使用的存储过程实现。于是也使用了一年多的存储过程。
2、当时的感觉就是效率:一些复杂的业务操作在几十行的存储过程中得到完美实践,要是换到程序中可能就是多少倍的代码工作量了。
3、但是也有不舒服的时候:数据库变动导致牵涉所有的存储过程变动、业务逻辑变更、字段增减带来比较多的修改操作。
总之:就当时来说觉得使用存储过程还是挺好的吧。
这个是阿里巴巴java开发技术手册中明确提到的。至于为什么,我们下面一一分析。
1、先说下存储过程的好处
①存储过程预编译,不需要解析,执行速度快,
②避免了sql注入和表字段,表结构的暴露
③可以通过少量的sql完成较多的业务处理
2、存储过程的缺点
业务逻辑封装在数据库中有明显的缺陷
①oracle移植到mysql由于语法不一致导致重写
②数据库结构改动,牵一发动所有存储过程
1、传统通信,金融对安全的需求较高:
存储过程避免暴露一些信息和sql注入
2、稳定
老生常谈,这类项目稳定是第一位的。数据库变动不大,只要数据库不崩就不会有问题。
3、充分利用数据库价值
这类应用部署在政府机关等地,有钱,机房稳定,oracle也给力
4、有钱
从硬件到网络投入较多,人家就是有资源优势
1、不能一概而论,要看具体业务场景
2、如果是通信、金融、国企类项目。追求系统安全,稳定,高速,且能提供一流的硬件支出,使用存储过程无可厚非。
3、如果是互联网项目(目前分布式居多),业务变动大,流动性强,就尽量避免过多使用存储过程。