存储过程什么场景用到呢?

lazyphp 发布于 2014/02/20 19:56
阅读 3K+
收藏 2

今天面试吧。。HR问到 我用过存储过程没。羞耻的我回答了,没有。然后被无尽地鄙视了。2年的PHP,连存储过程都不会,我是不是 没脸去见江东父老?

其实很早以前就去看过存储过程的东西,但看得一头雾水。根本不知道用处在那里。于是就没去再研究下来了。今天被这样一问,让我觉得自己羞耻了。该去研究研究。又翻了一下一些文章。很模糊。。所以特此求教一下。。。。。存储过程是做啥的?什么场景用到呢?

加载中
1
养大虾
养大虾

首先区别存储过程和触发器。
存储过程就相当于定义函数,触发器就是设定条件自动触发。
触发器里可以调用存储过程,存储过程不能调用触发器。

可以看这篇学习存储过程:http://blog.sina.com.cn/s/blog_86fe5b440100wdyt.html (我就是看这篇学的)

触发器简单些,就自己百度找教程吧。

wad12302
wad12302
mk
0
mark35
mark35
对数据ACID要求严格的时候
0
gvim
gvim

存储过程是给码农用的DBMS接口,是过程思维,DBMS的接口应该是SQL,是描述化思维。很多码农没有这种思维。看看高级SQL的书学学SQL可以怎么玩。

除了性能排第一的场合,一般慎用存储过程。

南湖船老大
南湖船老大
十分不赞同
0
huan
huan
其实稍微复杂点的业务系统都会用到存储过程,最近看到有这样的趋势感觉很不好:明明用procedure很简单的事情要把大量数据倒腾出来到应用代码中做,然后再倒腾回数据库。效率非常低,浪费了大量带宽及内存。还在沾沾自喜,美其名曰:数据库可移植, 其实是不会用procedure. 如果你要钉一个钉子,请使用锤子,哪怕你是使用螺丝刀的大师也不要去用螺丝刀(即便可能成功),如果你不会用锤子,去学习。
条纹双肩包
一个数据库一个存储过程能处理多少数据?当一个表的数据量上亿了,处理速度之慢。。。,那只是一个逻辑的,一堆业务的都在一个库里跑,虽然省去了数据传输,总会有极限的,即使物理机配置超豪华
Yashin
Yashin
深有体会,处理数据库里的数据,存储过程省事很多,而且高效。
t
ten.anihcso
说得很好
beyondforever68
beyondforever68
说的对
渔樵耕读
渔樵耕读
说得挺对的。 各司其职比较好。
下一页
0
wharf_zhang
wharf_zhang
共享,预编译,安全,效率,通用,工具链,等等。ACID与此无甚关系,事务也与此无关。如果数据库不能实现自己的开发语言,则不会有存储程序的可能。进一步地,如果数据库没有实现解释器,编译器,虚拟机之一,则也没有可能实现存储程序。后者是前者的应用而已。个人观点,欢迎指正探讨。
0
南湖船老大
南湖船老大

写过2W行存储过程的路过(存储过程不像代码,还真不好写)。

稍微复杂点的业务系统,或者对数据一致性要求高的场所(存储过程中用事务比较方便),性能要求高的地方(减少了和脚本语言的交互以及带宽,反正脚本语言都是把SQL拼接好了发给数据库,在数据库里直接干岂不是更好),另外做数据统计也很方便。

至于有人提到的数据库可移植性,大多数情况是伪命题

返回顶部
顶部