当前位置:首页 » 存储配置 » oracle存储过程性能

oracle存储过程性能

发布时间: 2022-11-28 23:58:32

⑴ oracle存储过程有什么好处

1。预编译,已优化,效率较高。避免了sql语句在网络中传输然后再解释的低效率。
2。如果公司有专门的DBA,写存储过程可以他来做,程序员只要按他提供的接口调用就好了。这样分开来做,比较清楚。
3。修改方便。嵌入在程序中的SQL语句修改比较麻烦,而且经常不能肯定该改的是不是都改了。SQLSERVER上的存储过程修改就比较方便,直接改掉该存储过程,调用它的程序基本不用动,除非改动比较大(如改了传入的参数,返回的数据等)。
4。会安全一点。不会有SQL语句注入问题。
当然,也有缺点。特别是业务逻辑比较复杂时,全用存储过程来写,估计也累的够呛。
■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。
■调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可
■你可以在存储过程中利用Transact-SQL的强大功能。一个SQL存储过程可以包含多个SQL语句。你可以使用变量和条件。这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库

⑵ 如何评价一个项目使用了大量的oracle存储过程

强烈支持大量运用存储过程,最好100%用。
效率高,用户happy

  1. 存储过程性能好
    2.存储过程代码可复用性好
    3.避免在程序中含有大量SQL,可移植性不好。

    这么多人在说用存储过程的优点,那我就来说说缺点:
    1、移植性问题
    这个搞数据库开发的人都能理解,是不是问题看系统的需求而定,这里就不多说了。如果数据库要移植的话,用存储过程就会带来很多问题,最好不用。

    2、性能扩展性问题
    随着系统访问量的增长,系统必须进行不断地升级扩展,特别对于大型系统而言,更重要的是性能可扩展性而不是局部的性能。J2EE等多层结构要解决的也是这方面的问题。
    处理逻辑如果全部放在存储过程里,所有的处理都在数据库服务器上进行,消耗的就是数据库服务器的CPU资源,大家知道数据库服务器由于需要较高的可靠性,通常选用的都是价格昂贵的服务器,对数据库服务器升级通常都花费很大。
    如果把处理逻辑放在中间层服务器上进行,中间层服务器一般都是小型的机器,价格便宜,而且中间层服务器的CPU通常主频比数据库服务器的速度还快(比如现在8CPU的数据库服务器主频只有800M,而双CPU的刀片式服务器CPU主频已经到2.8G了),而且对于多层架构,支持中间层服务器可以增加多台机器进行负载均衡,用中间层服务器即价格便宜,扩展空间也更大。

    3、开发问题
    存储过程还是过程型语言,其重用性比不上JAVA等面向对象语言开发。用JAVA开发的中间层服务可服用性更好(当然,前提是你采用面向对象设计)


    上面只是列举的一部分问题,这些问题就值的你好好考虑是否采用存储过程了,我的观点是存储过程应该有选择地使用,牵涉到批量数据操作的,用存储过程较好。对于小数据量处理的事务操作,应放到中间层处理,这样系统的移植性和扩展性更好

⑶ oracle用包还是用存储过程比较好,性能上有什么区别

包和存储过程是两个不同的概念。
包可以理解成类似面向对象语言中的命名空间,而存储过程可以放到包内,这样管理比较方便,而且不会有命名冲突的问题。包内还可以有函数,类型定义等等其他内容。
当然,存储过程可以不放到任何包内的。

⑷ oracle存储过程效率问题,存储过程,每分钟1千条数据,有44多万数据,怎么样能执行速度快

建议你找找有关提高语句效率的方法,将有些语句调整调整,比如将确定的且筛选数据比较厉害的条件向后靠,同时增加一些索引,另外写法上调整一下,例如,既然count出来 V_COUNT不是一条就不要取 V_SERV_ID 到变量中了,直接返回失败.

另外 SELECT T.ID INTO V_ID FROM rms.SS_MODULE T WHERE T.SS_ID = (SELECT T.ID FROM DEVICE T WHERE T.NAME = (SELECT T.DEVICE_NAME FROM SOFT_SWITCH_TABLE T WHERE T.DEVICE_NAME IS NOT NULL)) AND T.CODE = V_CODE; 这个语句中好多T 我都不知哪个字段是哪个表的

⑸ oracle存储过程有什么好处

你应该问数据库存储过程有什么好处存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。x0dx0a* 可保证数据的安全性和完整性。x0dx0a# 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。x0dx0a# 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。x0dx0a* 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。x0dx0a* 可以降低网络的通信量。x0dx0a* 使体现企业规则的运算程序放入数据库服务器中,以便:x0dx0a# 集中控制。x0dx0a# 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。

⑹ ORACLE 存储过程是什么 它的用处,好处是什么概念性的东西多点。。

定义:存储过程(Stored Procere )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。
优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。

简单说,你在你的机器上写了个存储过程,这个存储过程像那些表里的数据一样被放在遥远的数据库服务器当中,但是它又是可执行的代码,其他能连到数据库服务器的用户,可以调用你写的存储过程
它的作用是隐藏细节,就是说,你写的存储过程代码可能很复杂,但是其他人调用它却很简单,不用具体知道它是如何做的,且一次能完成多个指令

oracle有系统存储过程和自定义存储过程2种存储过程。
系统存储过程就是由oracle预先提供的一组完成特定功能的存储过程,安装完oracle就有了。
自定义存储过程就是存在oracle数据库里由一组plsql语句组成的自定义过程(procere)。它可以供其它oracle自定义存储过程、自定义函数和job调用或者由客户端程序调用。

⑺ oracle函数和存储过程有什么区别

一、主体不同

1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。

2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。

二、特点不同

1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。

2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。


三、功能不同

1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的操作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。

2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。


⑻ oracle存储过程效率问题,处理1500w的数据插入

处理大批数据的时候,游标对逐行处理会很慢,而且你的写法,commit在循环中,也会很慢。
其实你的功能可以用一个不循环的语句解决。
假设你定义游标的语句是(假设你的源数据表名为test):
select rpt.a,rpt.b,rpt.c,rpt.zy,rpt.zc,rpt.zd,rpt.zr,rpt.df from test rpt;
你的功能可以用以下语句解决:
insert into targ@dc_link (a,b,c,bianma,)
select rpt.a,rpt.b,rpt.c,'0'||num,decode(num,1,rpt.zy,2,rpt.zc,3,rpt.zd,4,rpt.zr,5,rpt.df) from test rpt,(select rownum num from test where rownum<6);
commit;

这样的好处是语句和commit都只有一个,会快很多。

如果觉得有帮助,请采纳:)

⑼ 现在oracle在实际运用中存储过程用的多吗

这个是必须使用的,我们公司的项目中就使用到了
*1) 存储过程帮助在数据库层聚集T-SQL代码。嵌入即席SQL的网站或应用程序在应用环境下很难修改,当即席SQL嵌入在应用程序内的时候,你可能会花费太多时间试图找到和调试嵌入的SQL。-- 一旦找到了bug,你可能就需要重新编译可执行程序,引起不必要的应用程序临时停止或痛苦的应用程序部署。如果把T-SQL集中到存储过程中去,-- 你就只需要集中在一个地方来查询SQL代码或SQL批处理。如果你能正确地为代码建立文档并对代码标准化,存储过程就会提升整个应用程序的可支持性。

-- *2) 存储过程帮助大的即席查询减少网络流量。编写应用程序调用而不是500行的SQL调用来执行存储过程,对网络以及应用程序的性能有正面影响,特别是当调用在一分钟内重复数千次时。

-- *3) 存储过程促进代码的可利用性。例如,如果你的网站应用程序使用一个下拉菜单来包含一组城市,并且这个下拉菜单用于很多网页,-- 你可以在每个页面调用存储过程而不是在多个地方嵌入相同的SQL。

-- *4) 存储过程淡化数据获取的方法。如果你修改了提供源数据的基本表,存储过程(和视图相似)能让应用程序对这个修改透明。这样就不需要修改应用程序底层的代码就能修改。-- 你可以把老的表换成新的,而且只要同样的列和数据类型返回给应用程序,则应用程序完全不知情。

-- *5) 与视图不同,存储过程可以利用流控制技术、临时表、表变量等。

-- *6) 存储过程对查询响应时间的影响比较稳定。如果你使用大量的即席查询,可能会注意到有时候从查询中返回结果所花的时间变化很大

⑽ oracle存储过程有什么好处

好处1:
存储过程里面的代码, 都是已经被 “编译” 过的了。 直接可以执行。
如果不是存储过程,那么你每次执行代码, 都要再编译。

好处2:
减少网络流量。
假如你的存储过程,是要分别检索几个大的表,然后作复杂的计算,最后产生一个小的汇总结果。
如果全部在客户端处理,那么会有大量的数据,从服务器传递到客户端。 然后客户端将多个 大的结果集合,处理成一个小的汇总集合。
如果用存储过程,那么这些网络上传递的数据,将仅仅包含那个小的汇总集合。

热点内容
easyui框架源码 发布:2025-09-23 04:28:52 浏览:473
啪啪游戏厅存储位置 发布:2025-09-23 04:06:01 浏览:977
光遇服务器人数过多怎么办 发布:2025-09-23 03:59:20 浏览:438
androidzip解压密码 发布:2025-09-23 03:42:05 浏览:367
windows并行编译 发布:2025-09-23 03:33:38 浏览:802
门禁编程 发布:2025-09-23 03:32:55 浏览:893
安卓上网记录在哪里找 发布:2025-09-23 03:23:26 浏览:35
固态存储芯片 发布:2025-09-23 03:22:06 浏览:286
androidsocket手机 发布:2025-09-23 03:21:57 浏览:646
linux终端设置快捷键设置 发布:2025-09-23 03:12:16 浏览:1002