我说说下自己的经验吧,很早就接触存储过程了,但是最近老板竟然要求所有业务都用存储过程,匪夷所思。
存储过程有它的优点:
(1) 执行速度比写在代码里速度快,这个不用说了
(2) 能实现一定程度松耦合,有些更新直接更新数据库即可,不用部署应用层
但缺陷也很明显
(1) 部署超级麻烦好嘛,都没有版本控制。不要说写sql文件放在git里,那个根本不可行。一个疏忽就很可能当前版本和数据库版本不一样,因为你的数据源不是去对比数据库的
(2) 增加中间件麻烦,中间件很多不支持
(3) 如果你代码和存储过程都需要修改怎么办,怎么平滑启动?当你修改存储过程,然后重载代码中间的这几秒中,很可能有人访问,服务就报500错误了
(4) 以后要拆库拆表了,怎么办。当然这种概率很小,毕竟项目黄的概率还是很大的
(5) 调试麻烦,特别是生成,难道你把所有数据库日志都记录下来吗?
所以如果你的业务经常变动,或者业务逻辑很复杂,要更新的内容很多,请不要用存储过程,告诉你全都是坑。那一点点性能优势不值得,你咋知道你的项目能有千万并发?再说了,那时候还会轮到你用存储过程吗?