• 关于数据库存储过程和函数的区别,优缺点以及各家之言


    摘抄观点:

    1. 存储过程(Stored Procedure):一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
    2. 存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
    3. 数据库专心做好数据存取就够了,业务都交给程序去实现!别把业务层的东西整到数据库里去。互联网基本不会用存储过程
    4. 因为数据库开发和优化的复杂性,DBA根本就不相信写业务逻辑的人能写出好的SQL(同时不相信ORM),业务逻辑的开发者也不想研究schema后面的水有多深,所以存储过程很好的解决了责任分工的问题。
    5. 存储过程开发快,升级方便,不用替换业务版本,跑下数据升级脚本就行。参加过一个大项目业务,业务逻辑大部分是oracle pl/sql存储过程实现。后来性能遇到瓶颈,热点查询app代码重写了一遍。
    6. 存储过程一旦调试完成通过后就能稳定运行,这与各个业务在一段时间内是相对稳定和确定是匹配的;存储过程大大地减少了业务系统与数据库的交互,一定程度降低了业务系统与数据库的耦合,例如即使业务系统与应用系统不在同一城市,对性能的影响也可控(100条SQL语句交互一次,即使延时由同城1ms增加到异地50ms,也只是增加49ms,如果交互100次,则增加4900ms)。在互联网行业,存储过程很少使用,一个重要的原因是MySQL的广泛使用,而MySQL的存储过程的功能很弱(跟商业数据库相比);另外也跟互联网行业变化快有一定的关系。

    引用出处:

    Mysql 存储过程和函数区别 http://www.cnblogs.com/youxin/p/3568379.html

    MySQL存储过程_创建-调用-参数 http://www.cnblogs.com/geaozhang/p/6797357.html

    存储过程在实际项目中用的多吗?https://www.zhihu.com/question/54408187

  • 相关阅读:
    MySQL创建用户和权限管理
    自建单机MySQL数据库备份方案
    Elasticsearch 6.8.4 启动报错解决方法
    自定义 Generate POJOs.groovy
    SpingBoot —— RestTemplate的配置
    springboot —— 多数据源
    SpringBoot -- 计划任务
    SpingBoot —— 多线程
    SpringBoot -- 事件(Application Event)
    SpringBoot —— AOP注解式拦截与方法规则拦截
  • 原文地址:https://www.cnblogs.com/yanghuahui/p/9085461.html
Copyright © 2020-2023  润新知