想必每个程序员对存储过程都不陌生,它是在大型数据库系统中,一组为了完成特定功能的sql数据集。为什么要写存储过程,通过查阅整理官方或者一些大佬的见解,有这么几点:
1.效率高
存储在数据库中,一次编译后永久有效,每次调动直接执行。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
2.降低网络流量
存储过程编译好后存储在数据库,在调用时所用事务都在数据库中执行,不会传输大量数据,降低了网络开销。
3.复用性高
存储过程往往是针对某个特定功能业务编写的,当要完成该功能时可再次调用,需要实现类似功能时可直接改写。
4.可维护性高
但功能要求发生小的变化时,修改之前的存储过程比较容易,花费精力较少。
5.安全性高
完成某个特定功能的存储过程一般只有特定用户可以使用,具有身份限制,且存储过程存储在数据库中,就决定了其和数据具有同样高的安全性。
虽然存储过程有以上这些优点,但也架不住它难以调试和扩展、可移植行差等被大多数互联网公司禁用。对于我来说,做了两年多的数据依然不敢苟同,对它的感觉依然是——恶心。
证券公司的系统,业务大多都是通过存储过程来实现,简单业务实现起来还好,但涉及薪酬计算这种复杂业务,其过程真是看了就摇头。昨晚,为了排查一个薪酬计算中的小问题,折腾到凌晨。对于整个计算逻辑不熟悉,只有根据问题一步步追溯过程,找出源头。
有时候还挺羡慕做程序开发的同学朋友,一个问题有N多种解决方案,也不必为程序调试伤精费神。因为各种局限和无奈,导致自己现在技术栈浅,和别人聊技术,都不好意思说自己只会写SQL,实在是人生无常。
网友评论