了解什么是存储过程

前言

       在进行机房重构的下机过程时,看到好多人都用到了存储过程这一方法,不过当时自己不是很明白这是用来干什么的,在什么时候可以用。并且在网上看到很多去公司面试的程序员都有这样的一个经历:一些去大公司面试的时候,几乎每个面试官在问到数据库的时候都会问到有没有用过存储过程,这些程序员同胞们心里都有很大的疑问,存储过程真的这么重要吗,曾经做过的项目也没有用到存储过程不也一样好好的运行出来吗。

       所以存储过程真的有那么重要吗,我们在什么时候用到它,它的好处跟作用又是什么?

我们可以这样认为:在我们做一个复杂的项目时,会多次涉及到与数据库的连接,这时我们会一次次的来用SQL语句进行对数据库的连接,但如果我们这时用存储过程的话就只需要连接一次数据库就可以了,从而省去大量的SQL语句。面试官的问题其实也只是想看看你对代码技巧的熟悉度,或者是丰富的存储过程经验。想进大公司我们必须要熟练的掌握这些技能。

到这里有些人会认为原来存储过程是面对大型的项目的啊,这中想法是不对的,其实对于我们现在做的这些小项目存储过程也是很重要的。我们可以以这样的一个思维逻辑来想一下:做大项目需要丰富的存储过程经验,但是我们没有做过大项目哪来的经验,而我们现在面试的又是大项目,那这样我们必将会被淘汰。所以我们要在一些中小项目里锻炼自己。不过这只是一种思维,其实存储过程在中小项目中的威力也不容小觑。

我们来看一下存储过程的优点:

1运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对齐进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通快。(就相当于操作系统中的TLB快表  )

2.减少网络传输:存储过程直接就再数据库服务器上跑,所有的数据访问都在数据库服务器内部进行,不需要传输数据到其他服务器,所以会减少一定的网络传输,但是在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的,而且我们的应用服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。

3.可维护性:存储过程有时候比程序更容易维护,这时因为可以实时更新DB端的存储过程,有些bug,直接改存储过程里的业务逻辑就搞定了。

4.增强安全性:提高代码的安全,防止SQL注入,这一点sql语句也可以做到。

5:可扩展性:应用程序和数据库操作分开,独立进行,而不是相互在一起,方便以后的扩展和DBA维护优化。

 

通过上面第二条我们可以了解到存储过程是在数据库服务器上创建的,所以任何涉及到数据库的调整,存储过程就都得改动,所以即使存储过程好用我们也不能滥用。

小编目前只能理解到这里,希望大家前来指导!

你可能感兴趣的:(机房)