`
king_tt
  • 浏览: 2259908 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle存储过程优化小实践

 
阅读更多

近日,接触到ORACLE 存储过程的优化问题,业务过程非常简单。该存储过程的主要DML操作就是UPDATE,需要根据某个条件对数据表的某个字段进行更新,其中使用到游标。之后写了个测试的例子,以下具体介绍。

  测试环境:

  OS:WINDOWS XP +Intel(R) 2CPU(1.60GHz) + 1GB

  数据库: ORACLE10g

  测试数据:10万行

  存储过程代码:

CREATEORREPLACEPROCEDUREprc_update_0
  IS
  TYPEtab_idISTABLEOFROWID;
  CURSORcur_skyISSELECTROWIDFROMTBL_USER_AUTHWHEREIMSIISNOTNULL;
  BEGIN
  OPENcur_sky;
  FETCHcur_skyBULKCOLLECTINTOv_rowid;
  FORALLiIN1..v_rowid.COUNT
  UPDATETBL_USER_AUTHSETMPXYZDATAE='nsofsofmslfd'WHEREROWID=v_rowid(i);
  COMMIT;
  CLOSEcur_sky;
  EXCEPTION
  WHENothersTHEN
  ROLLBACK;
  DBMS_OUTPUT.PUT_LINE('Updatefailed!');
  END;
  /
  CREATEORREPLACEPROCEDUREprc_update_1
  IS
  v_rowidROWID;
  CURSORcur_skyISSELECTROWIDFROMTBL_USER_AUTHWHEREIMSIISNOTNULL;
  BEGIN
  OPENcur_sky;
  LOOP
  FETCHcur_skyINTOv_rowid;
  EXITWHENcur_sky%NOTFOUND;
  UPDATETBL_USER_AUTHSETMPXYZDATAE='nsofsofmslfd'WHEREROWID=v_rowid;
  ENDLOOP;
  COMMIT;
  CLOSEcur_sky;
  EXCEPTION
  WHENothersTHEN
  ROLLBACK;
  DBMS_OUTPUT.PUT_LINE('Updatefailed!');
  END;
  /
  测试结果:

  运行次数

  时间(s) 1 2 3 4 5 6 7 8 9 10 avg

  prc_update_0 5 4 4 7 4 4 8 8 4 8 5.6

  prc_update_1 9 11 9 10 13 9 9 9 11 9 9.9

  从以上结果可以看出:

  对于游标的循环,BULK COLLECT对性能的改善有很大的提高。实验数据只有10万行,当数据量达到千万级的时候,运行时间的差距就非常明显。

分享到:
评论

相关推荐

    ORACLE存储过程性能优化技巧

    Oracle存储过程是数据库管理系统中的一种重要工具,用于封装一...以上这些技巧是ORACLE存储过程性能优化的基础,实践中需要结合具体业务场景和系统配置灵活运用。理解并掌握这些方法,有助于提升数据库系统的整体性能。

    oracle存储过程-帮助文档

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL语句和PL/SQL块,形成可重复使用的代码单元。这篇博客“oracle存储过程-帮助文档”可能提供了关于如何创建、调用和管理Oracle存储过程...

    oracle存储过程学习经典

    综上所述,Oracle存储过程的学习不仅涉及基础语法和结构的理解,还需要掌握其高级特性和最佳实践,包括动态SQL、异常处理、性能优化以及与其他编程语言的集成。通过深入研究这些知识点,可以充分发挥Oracle存储过程...

    oracle存储过程学习经典(实例)

    这个"Oracle存储过程学习经典[语法 实例 调用].doc"文档很可能会包含以上这些概念的详细解释和丰富的实例,帮助读者理解并实践这些知识。实例是学习编程的最好方式,通过实际操作,学习者可以更直观地理解存储过程的...

    oracle存储过程教程

    在实际项目中,合理利用Oracle存储过程可以优化数据库性能,降低网络通信开销,提高代码的可读性和可维护性。因此,掌握Oracle存储过程的使用对于Java开发者来说是非常重要的。 在提供的“oracle存储过程教程@...

    oracle存储过程编写

    Oracle存储过程是数据库管理系统中的一种重要程序设计组件,它允许用户在数据库中执行复杂的操作序列,而不仅仅局限于简单的SQL查询。在Oracle中,存储过程是由一个或多个SQL语句和PL/SQL块组成的,可以被封装起来并...

    oracle存储过程学习资料

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列复杂的SQL和PL/SQL语句,形成可重用的...通过深入实践,你将能够熟练运用Oracle存储过程解决实际问题,提升数据库应用的性能和维护性。

    ORACLE SQL 优化 存储过程 PROCEDURE

    ORACLE SQL 优化存储过程 PROCEDURE 是一篇涵盖了广泛的 SQL 知识点和实践经验的文章,对于开发者提高开发效率和优化存储过程非常有帮助。文章的内容丰富,涵盖了从基本的 SQL 语句到高级的优化技术,能够满足不同...

    oracle存储过程函数生成DEMO

    Oracle存储过程和函数是数据库管理中的重要组成部分,它们允许开发者创建复杂的业务逻辑和数据处理流程。在这个"Oracle存储过程函数生成DEMO"中,我们主要关注如何在Oracle数据库环境中设计、编写、测试以及调用存储...

    Oracle存储过程编写与调试

    总之,Oracle存储过程的编写和调试是数据库开发中的关键技能,熟练掌握这些技巧将有助于优化数据库操作,提高应用的响应速度和稳定性。在实践中不断练习和学习,将有助于提升你在Oracle数据库管理领域的专业能力。

    oracle存储过程基础教程

    Oracle存储过程是数据库管理系统中的重要组成部分,主要用于组织和执行一系列SQL语句和PL/SQL代码。这个基础教程将带你深入理解Oracle存储过程的概念、创建、执行以及调用方法。 一、Oracle存储过程概述 Oracle存储...

    Oracle存储过程编写及调优

    总之,Oracle存储过程的编写和调优是一个涉及多个层面的过程,包括数据库设计、SQL编程、索引策略以及优化器选择。理解这些知识点并结合实际情况应用,可以显著提升Oracle数据库系统的性能和响应速度。

    oracle存储过程超详细使用手册

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写包含一系列SQL语句和PL/...该手册可能还会包含示例、最佳实践、错误处理策略以及常见问题解答等内容,帮助你全面掌握Oracle存储过程的使用。

    java调用oracle存储过程或者函数

    以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。

    oracle存储过程学习笔记(四)

    在“Oracle存储过程学习笔记(四)”中,我们将继续深入学习如何创建、调用和管理存储过程,以及在实际项目中如何利用它们来优化数据库操作和提高程序效率。文档“存储过程.docx”可能包含了更详细的示例和实践指导,...

    oracle存储过程学习经典入门

    Oracle存储过程是数据库...以上知识点都是Oracle数据库管理和优化的基础,对于理解和掌握Oracle存储过程的学习至关重要。通过深入学习和实践,开发者可以更好地利用Oracle的强大功能,优化数据库性能,提高系统稳定性。

    oracle 存储优化配置白皮书.pdf

    ### Oracle存储优化配置白皮书知识点解析 #### 一、引言 在现代信息技术领域,Oracle数据库因其强大的功能和稳定性而被广泛应用于企业级数据管理之中。然而,随着业务量的增长和技术需求的变化,如何有效提升...

    oracle存储过程集锦

    Oracle存储过程是数据库管理系统中的一种重要工具,它允许程序员或数据库管理员在数据库中定义一系列复杂的SQL语句和PL/SQL块,以便于执行批量处理、数据操作和业务逻辑。这个"Oracle存储过程集锦"包含了丰富的学习...

    Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip

    本资源“Oracle学习开发常用的SQL和存储过程学习(内含SQL面试题目和存储过程,函数面试题目).zip”提供了全面的学习材料,旨在帮助初学者和求职者提升在Oracle数据库中的SQL查询和存储过程编写技能。 SQL...

    Oracle数据库存储过程.pdf

    通过以上的介绍,我们可以了解到Oracle存储过程的定义、使用方法、变量的定义与声明、游标的使用、循环控制语句、过程控制语句、存储过程的创建和异常处理、触发器的概念与使用、JOB的管理以及SQL优化策略等多个方面...

Global site tag (gtag.js) - Google Analytics