博客
关于我
Oracle 并行原理与示例总结
阅读量:794 次
发布时间:2023-02-24

本文共 2362 字,大约阅读时间需要 7 分钟。

Oracle 并行原理与示例总结

1. 并行与并发的区别

并行(Parallel)与并发(Concurrent)是Oracle数据库中的两种关键概念,但它们的应用场景和效果截然不同。

  • 并行:将一个复杂操作分解为多个独立进程同时执行。适用于需要大量资源支持的任务,如数据分析和大规模查询。

  • 并发:多个会话或用户同时访问数据库,通常指的是数据库连接数量(如连接数)。并发主要用于衡量数据库的性能负载。

2. 数据库版本信息

数据库版本信息可以通过以下命令查看:

LEO1@LEO1> select * from v$version;

此时,数据库版本信息如下:

  • Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  • PL/SQL Release 11.2.0.1.0 - Production
  • CORE 11.2.0.1.0 - Production
  • TNS for Linux: Version 11.2.0.1.0 - Production
  • NLSRTL Version 11.2.0.1.0 - Production

3. 并行查询的应用场合

并行查询适用于以下场景:

  • OLAP业务模式:OLAP(Online Analytical Processing)是一种批量加载和批量检索的业务模式,常用于数据分析系统。数据仓库则是支撑这种模式的底层数据库。

  • 系统资源相对空闲:当CPU资源充足,IO负载低且内存足够时,可以考虑并行操作,需确保资源平衡。

  • 数据符合并行特点:操作数据没有串行化,能够拆分并分别处理。例如,统计多个区域的行数可以分给多个进程处理。

  • 4. 并行查询的三种方法

    Oracle 提供三种主要方法来启用并行查询:

  • 使用 hints

    select /*+ parallel(leo1 2) */ count(*) from leo1;

    临时有效。

  • 对象级别定义并行

    alter table leo1 parallel 4;

    直接修改表属性,长期有效。

  • 会话级别定义并行

    alter session force parallel query parallel 4;

    会话生命期内有效。

  • 并行查询与 DML

    需要启用会话级 DML 并行功能:

    alter session enable parallel dml;
  • 5. 并行查询执行计划示例

    以下是一个并行查询的执行计划示例:

    select /*+ parallel(leo1,2) parallel(leo2,2) */ count(*) from leo1,leo2where leo1.object_id=leo2.object_id;

    执行计划如下:

    Id Operation Name Rows Bytes Cost (%CPU) Time TQ IN-OUT PQ Distrib
    0 SELECT STATEMENT 1 26 320 (1) 00:00:04
    1 SORT AGGREGATE 1 26 26
    2 PX COORDINATOR
    3 PX SEND QC (RAND) TQ10001 1 26 Q1,01 P->S
    4 SORT AGGREGATE 1 26 26 Q1,01 PCWP
    5 HASH JOIN 72017 1828K 320 (1) 00:00:04 Q1,01 PCWP
    6 PX BLOCK ITERATOR 72017 914K 160 (1) 00:00:02 Q1,01 PCWC
    7 TABLE ACCESS FULL LEO1 72017 914K 160 (1) 00:00:02 Q1,01 PCWP
    8 PX RECEIVE 72017 914K 160 (1) 00:00:02 Q1,01 PCWP
    9 PX SEND BROADCAST TQ10000 72017 914K 160 (1) 00:00:02 Q1,00 P->P
    10 PX BLOCK ITERATOR 72017 914K 160 (1) 00:00:02 Q1,00 PCWC
    11 TABLE ACCESS FULL LEO2 72017 914K 160 (1) 00:00:02 Q1,00 PCWP
    ... ... ... ... ... ... ... ...

    6. 硬件配置与并行度优化

    根据自身硬件配置,可以通过以下方法找到最优并行度:

  • 并行度:Oracle 会启动多个并行服务进程来处理数据。一个 CPU 内核通常可以支持一个并行度。

  • 并行度与硬件关系:并行度在不同硬件上的效果差异很大,需根据实际情况调整。

  • 并行度与并发数:总并行数 = 并行度 × 并发数。并行度越高,总并行数越大。

  • 7. PARALLEL_DEGREE_POLICY 的三个值

    Oracle 11g 引入了 parallel_degree_policy 参数,用于设置并行度策略:

  • manual:手动管理并行度,Oracle 不会自动调整。

  • limited:当直接指定并行度时继续使用,默认并行度时 Oracle 会根据资源负载自动调整。

  • auto:Oracle 会根据资源情况动态调整并行度,适合大多数场景。

  • 通过实验可以发现:

    • manual:并行度固定为指定值,不随资源变化。
    • limitedauto:Oracle 会根据资源情况调整并行度,性能更优。

    8. 小结

    通过以上示例和分析,可以看出并行查询在处理大数据量和复杂任务时大大提升性能。合理设置并行度和并行度策略,根据硬件资源和业务需求,能够最大化数据库性能。

    转载地址:http://mxpfk.baihongyu.com/

    你可能感兴趣的文章
    OpenStreetMap初探(一)——了解OpenStreetMap
    查看>>
    openSUSE 13.1 Milestone 2 发布
    查看>>
    openSUSE推出独立 GUI 包管理工具:YQPkg,简化了整个软件包管理流程
    查看>>
    OpenVP共用账号 一个账号多台电脑登录
    查看>>
    OpenVSwtich(OVS)Vlan间路由实战 附实验环境
    查看>>
    Openwrt LuCI模块练习详细步骤
    查看>>
    openwrt_git_pull命令提示merger冲突时如何解决?
    查看>>
    OpenWrt包管理软件opkg的使用(极路由)
    查看>>
    OpenWrt固件编译刷机完全总结
    查看>>
    Open××× for Linux搭建之二
    查看>>
    Open×××有线网络时使用正常,无线网络时使用报错的解决方案
    查看>>
    Opera Mobile Classic Emulator
    查看>>
    Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
    查看>>
    OperationResult
    查看>>
    Operations Manager 2007 R2系列之仪表板(多)视图
    查看>>
    operator new and delete
    查看>>
    operator new 与 operator delete
    查看>>
    operator() error
    查看>>
    OPPO K3在哪里打开USB调试模式的完美方法
    查看>>
    oppo后端16连问
    查看>>