存储过程定义及应用场景

 

一、什么是存储过程

一组为了完成特定功能的SQL语句的集合,经过编译之后存储在数据库

中,用户通过指定存储过程的名字并给定其参数(前提:该存储过程需要参数)来调用执行它。

简单来说,存储过程类似于java中的方法,其也可以实现一些比较复杂的逻辑功能。

 

二、为什么使用存储过程 ?

优势有哪些,如下:

              ①、存储过程执行速度快,效率高;

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

 

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

              ②、存储过程增强了sql语言的功能和灵活性,可以实现复杂的逻辑功能;

                           - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

  ③、存储过程重用性比较高,透明性,数据一致性;

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

  ④、存储过程可以减少网络流量;

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

 

               过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是

                           多条SQL语句。从而减轻了网络流量,降低了网络负载。

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

  ⑤、存储过程安全性;

                           - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

 

               b、权限控制,不同用户不同权限,避免非授权用户对数据的访问,保证数据的安全。            

                           - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

三、使用存储过程的劣势 

劣势,缺点,如下:

              ①、开发局限性;

                           - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

 

 

 

 

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

              ②、难以调试与维护不便;

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

 

 

               调试工具:dbForge Studio for MySQL-不推荐

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

              ③、可移植性差;

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

 

             (如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS              

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

              ④、没办法应用缓存;

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

 

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

              ⑤、没办法应用缓存无法适应数据库的切割(水平或垂直切割)

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

                            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

 

四、总结

       存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打

折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编

程的灵活性。 

       普通的项目开发中,不建议大量使用存储过程,对比SQL语句,存储过程适用于业务逻辑复杂,比较耗时,同时请

求量较少的操作,例如后台大批量查询、定期更新等。

       使用场景:

                 1、当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应用存储过程;

                 2、在一个事务的完成需要很复杂的商业逻辑时可以考虑应用存储过程;

                 3、比较复杂的统计和汇总可以考虑应用存储过程。