存储过程定义及应用场景
一、什么是存储过程
一组为了完成特定功能的SQL语句的集合,经过编译之后存储在数据库
中,用户通过指定存储过程的名字并给定其参数(前提:该存储过程需要参数)来调用执行它。
简单来说,存储过程类似于java中的方法,其也可以实现一些比较复杂的逻辑功能。
二、为什么使用存储过程 ?
优势有哪些,如下:
①、存储过程执行速度快,效率高;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
②、存储过程增强了sql语言的功能和灵活性,可以实现复杂的逻辑功能;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
③、存储过程重用性比较高,透明性,数据一致性;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
④、存储过程可以减少网络流量;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是
多条SQL语句。从而减轻了网络流量,降低了网络负载。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
⑤、存储过程安全性;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
b、权限控制,不同用户不同权限,避免非授权用户对数据的访问,保证数据的安全。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
三、使用存储过程的劣势
劣势,缺点,如下:
①、开发局限性;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
②、难以调试与维护不便;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
调试工具:dbForge Studio for MySQL-不推荐
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
③、可移植性差;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
④、没办法应用缓存;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
⑤、没办法应用缓存无法适应数据库的切割(水平或垂直切割);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
四、总结
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打
折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编
程的灵活性。
普通的项目开发中,不建议大量使用存储过程,对比SQL语句,存储过程适用于业务逻辑复杂,比较耗时,同时请
求量较少的操作,例如后台大批量查询、定期更新等。
使用场景:
1、当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应用存储过程;
2、在一个事务的完成需要很复杂的商业逻辑时可以考虑应用存储过程;
3、比较复杂的统计和汇总可以考虑应用存储过程。