首页 > 其他分享 >存储过程的优点和缺点

存储过程的优点和缺点

时间:2024-03-21 20:24:36浏览次数:34  
标签:存储 数据库 sql 逻辑 优点 缺点 SQL 过程

存储过程的优点和缺点

 

 优点

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

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

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

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

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

  缺点  

   1. SQL本身是一种结构化查询语言,但不是面向对象的的,本质上还是过程化的语言,面对复杂的业务逻辑,过程化的处理会很吃力。同时SQL擅长的是数据查询而非业务逻辑的处理,如果如果把业务逻辑全放在存储过程里面,违背了这一原则。

   2. 如果需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新调用,等等,这时候估计会比较繁琐了。

   3. 开发调试复杂,由于IDE的问题,存储过程的开发调试要比一般程序困难。     

   4. 没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。

   5. 不支持群集,数据库服务器无法水平扩展,或者数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。

  总结

   1. 适当的使用存储过程,能够提高我们SQL查询的性能,

   2. 存储过程不应该大规模使用,滥用。

   3. 随着众多ORM 的出现,存储过程很多优势已经不明显。

   4. SQL最大的缺点还是SQL语言本身的局限性——SQL本身是一种结构化查询语言,我们不应该用存储过程处理复杂的业务逻辑——让SQL回归它“结构化查询语言”的功用。复杂的业务逻辑,还是交给代码去处理吧。

标签:存储,数据库,sql,逻辑,优点,缺点,SQL,过程
From: https://www.cnblogs.com/sexintercourse/p/18088170

相关文章

  • UEditor-结合XML文件上传导致的存储型XSS
    1、在某学校的考试系统的事故案例->添加新文章2、由于该编辑器为UEditor,并根据版本信息可联系到历史爆出过漏洞,在.NET开发的版本可通过木马文件上传进行getshell;但又由于此处为php语言开发,只能上传xml文件,于是思路转变成xml文件上传+XSS组合拳的方式进行测试。3、先构造一个te......
  • 询问ChatGPT4,改造TodoList:把本地存储的localStorage修改成PHP+Redis
    这里照搬的是:免费极简设计网页版Todo  https://www.ricocc.com/todo/非常感谢原作者Rico。我很喜欢这个设计和风格,但是可惜只能本地存储,我又不想使用微软的TODO,登录倒无所谓,但是数据同步问题很大,实在头痛,所以放弃。我是菜鸟,只是刚好前段时间安装了Apache、PHP的一键安装包和......
  • 高效存储方案:Amazon S3 Express One Zone 正式推出
    前言:当今社会,数据的迅猛增长使得高效且安全的存储方案变得愈发关键。对于开发者和企业而言,拥有一个能够满足业务需求的存储解决方案至关重要。然而,面对诸多选项,如何找到更加合适的存储方案成为一个值得深思的问题。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源......
  • 创建NFS类型的存储
    安装NFS,设置共享目录#centosyum-yinstallnfs-utils#ubuntuaptinstallnfs-server#启动RPC服务startrpcbind#创建共享目录mkdir-p/data/share共享目录vim/etc/exports/data/share*(rw,no_root_squash)exportfs-arv 挂载NFSapiVersion:apps/v1kin......
  • AI的优缺点及未来展望:探索人工智能的崭新时代
    全球首位AI程序员诞生,将会对程序员的影响有多大?近期,全球首位AI程序员Devin的出场,不禁让我想到了一个有趣的问题:AI程序员会不会抢程序员的饭碗呢?先别着急下结论!虽然AI技术在编程领域越来越广泛,但它真的能完全替代我们程序员吗?人工智能(AI)是当今世界最引人注目的技术之一,它已经......
  • DHCP服务器的优缺点简介
    DHCP服务器的优点和缺点主要体现在以下几个方面:优点:自动化配置:DHCP服务器可以自动为接入网络的客户端分配IP地址、子网掩码、默认网关、DNS服务器等网络配置信息,从而简化了网络配置过程,减少了手动配置的工作量。减少IP地址冲突:DHCP服务器能够跟踪已分配的IP地址,避免将相同的IP......
  • mysql-存储引擎
    1.mysql的体系结构下面这张图值得注意的是不同的存储引擎的Index不一样,从5.5版本以后存储引擎默认的就是InnoDB了。2.存储引擎 --查询建表语句---默认存储引擎:InnoDBshowcreatetablecourse;--查询当前数据库支持的存储引擎showengines;--创建表my_myisam,......
  • 浮点数在内存中的存储及精度问题
    1.引子通过上图,我们发现即使是在我们看来字节大小、实际意义一样的数据,以浮点数、整数两种不同的形式进行存放、取出结果是不同的值,这就说明计算机对浮点数与整数是完全不同的处理方式。毕竟我们都知道计算机是只能识别二进制,因此如何表示小数以及用科学计数法表示数中的点后......
  • JMeter压测存储过程
    背景压测后端接口时性能表现不佳,而恰好这个接口是调用DB存储过程进行处理数据,可以分别对存储过程和后端接口进行压测,并对比性能数据,了解分析性能瓶颈。前置下载:mysql-connector-j-8.3.0.jar,放置到jmeter\lib\ext目录下注:测试不同的数据库下载不同的jar包引入jmeter配置执行......
  • 常见物联网模型优缺点简介
    物联网模型多种多样,每种模型都有其独特的优点和局限性。以下是一些常见的物联网模型及其优缺点概述:集中式模型:优点:数据管理和处理集中化,便于统一监控和维护。安全性较高,数据在中心节点进行统一加密和处理。缺点:中心节点可能成为单点故障,一旦故障整个系统将受影响。随......