`

oracle parallel computing

阅读更多
用Oracle并行查询发挥多CPU的威力

在一个单独的服务器中安装更多的 CPU成为目前的一个趋势。使用对称多处理服务器(SMP)的情况下,一个Oracle服务器拥有8个、16个或32个CPU以及几吉比特RAM的SGA 都不足为奇。
    Oracle跟上了硬件发展的步伐,提供了很多面向多CPU的功能。从Oracle8i开始,Oracle在每个数据库 函数 中都实现了并行性,包括SQL 访问(全表检索)、并行数据操作和并 行恢复。对于Oracle专业版的挑战是为用户的数据库配置尽可能多的CPU。

    在Oracle环境中实现并行性最好的方法之一是使用Oracle并行查询(OPQ)。我将讨论OPQ是如何工作的和怎样用它来提升大的全表检索的响应时 间以及调用并行事务回滚等等。

   使用OPQ

    当在Oracle中进行一次合法的、大型的全表检索时,OPQ能够极大地提高响应时间。通过OPQ,Oracle将表划分成如图A所示的逻辑块。

    由 OPQ划分的表

    一旦表被划分成块,Oracle启用并行的子查询(有时称为杂务进程),每个子查询同时读取一个大型表中的一块。所有子查询完毕以后,Oracle将结果 会传给并行查询调度器,它会重新安排数据,如果需要则进行排序,并且将结果传递给最终用户。OPQ具有无限的伸缩性,因此,以前需要花费几分钟的全表检索 现在的响应时间却不到1秒。

    OPQ严重依赖于处理器的数量,通过并行运行之所以可以极大地提升全表检索的性能,其前提就是使用了N-1个并行进程(N=Oracle服务器上CPU的 数量)。

    必须注意非常重要的一点,即Oracle9i能够自动检测外部环境,包括服务器上CPU的数量。在安装时,Oracle9i会检查服务器上CPU的数量, 设置一个名为cpu_count的参数,并使用cpu_count作为默认的初始化输入参数。这些初始化参数会影响到Oracle对内部查询的处理。

    下面就是Orale在安装时根据cpu_count而设置的一些参数:

    fast_start_parallel_rollback
    parallel_max_servers
    log_buffer
    db_block_lru_latches

参数     

    让我们进一步看看CPU的数量是如何影响这些参数的。

   参数fast_start_parallel_rollback

    Oracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚得能力。当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务 并回滚到起始状态。这被称为并行热启动,而Oracle使用基于cpu_count的fast_start_parallel_rollback 参 数来决定未完成事务的秉性程度。

    并行数据操纵语言(DML)恢复能够在Oracle数据库崩溃后极大地加快其重新启动的速度。此参数的默认值是系统CPU数量的两倍,但是一些DBA们认 为应该将这个值设置为cpu_count的四倍。

   参数 parallel_max_servers_parameter

    Oracle一个显著的加强是自动决定OPQ并行的程度。由于Oracle清楚服务器中CPU的数量,它会自动分配合适的子进程的数量来提升并行查询的响 应时间。当然,会有其它的外部因素,比如表的划分以及磁盘输入/输出子系统的布局等,但是根据cpu_count来设置 parallel_max_servers参数将给Oracle一个合理的依据来选择并行的程度。

    由于Oracle的并行操作严重依赖服务器上CPU的数量,parallel_max_servers会被设置成服务器上CPU的数量。如果在一台服务器 上运行多个实例,则默认值太大了,会导致过度的页面交换和严重的CPU负担。并行的程度还依赖于目标表中分区的数量,因此 parallel_max_servers应该设置成足够大以允许Oracle为每个查询选择最佳数量的并行子查询。

   参 数log_buffer

    参数log_buffer定义了供即刻写入redo日志信息的保留RAM的数量,这个参数受cpu_count的影响。Oracle推荐 log_buffer最大为cpu_count乘以500KB或128KB。CPU的数量对于log_buffer来说非常重要,因为Oracle会生成 多日志写入(LGWR)进程来异步释放redo信息。

    log_buffer是Oracle中最易误解的的RAM参数之一,通常存在下面几个配置错误:

    log_buffer被设置得太高(例如,大于1MB),这回引起性能问题,因为大容量的结果会使得写入同步进行(例如,日志同步等待事件非常高)。 log_buffer不是db_block_size的倍数。在的Oracle9i中,log_buffer应该是2048字节的倍数。

   参 数db_block_lru_latches

    LRU锁的数量是在Oracle数据库内部用来管理 数据库缓冲的,这严重依赖于服务器上CPU的数量。

    很多聪明的Oracle9i的DBA使用多冲数据缓冲(例如db_32k_cache_size),他们推荐将这个未公开声明的参数重设置为默认的最大 值。db_block_lru_latches参数在Oracle8i中使用得很多,但是在Oracle9i中变成了一个未公开声明的参数,因为 Oracle现在根据数据库拥有的CPU数量设置了一个合理的默认值。

    db_block_lru_latches默认被设置为服务器上cpu_count的一半(例如服务器上只有一个Oracle数据库)。Oracle推荐 db_block_lru_latches千万不要超过cpu_count的两倍或三倍,或db_block_buffers的五十分之一。

    如果使用多缓冲池则这种计算方法有一个问题,因为不能控制分配给每个数据缓冲池的锁的数量。如果db_writers参数大于1,则默认值或许显得太小。

   加 强服务器

    Oracle数据库总是在提升性能,根据外部服务器环境检测cpu_count和基本参数设置的能力对于Oracle软件来说是一个重要的加强。

    随着更多的Oracle系统转移到SMP上来,当客户要采取增强措施并将众多的数据库转移到拥有32个或64个CPU的巨大服务器上来的时候,这些参数显 得愈发重要。

 

 

 

oracle parallel execution example

引子:以前一直没太关注oracle并行这个特性。前几天一个兄弟碰 到的一个问题,才让我觉得这个东西还是有很多需要注意的地方,有必要仔细熟悉下。其实碰到的问题不复杂:

类似如下的一条语句:insert into xxxx select /*+parallel(a) */ * from xxx a;数据量大约在75G左右,这位兄弟从上午跑到下午还没跑完,过来问我咋回事,说平常2hrs能跑完的东西跑了好几个小时还撒动静。查看系统性能也比较 正常,cpu,io都不繁忙,平均READ速度在80M/s左右(勉强凑合),但平均写速度只有10M不到。等待事件里面大量的‘PX Deq Credit : send blkd ’,这里能看出并行出了问题,从而最 后得知是并行用法有问题,修改之后20分钟完成了该操作。正确的做法应该是:
alter session enable dml parallel;

insert /*+parallel(xxxx,4) */ into xxxx select /*+parallel(a) */ * from xxx a;

因为oracle默认并不会打开PDML,对DML语句必须手工启用。 另外不得不说的是,并行不是一个可扩展的特性,只有在数据仓库或作为DBA等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP环境下使用并行 需要非常谨慎。事实上PDML还是有比较多的限制的,例如不支持触发器,引用约束,高级复制和分布式事务等特性,同时也会带来额外的空间占用,PDDL同 样是如此。有关Parallel excution可参考官方文档 ,在Thomas Kyte的新书《Expert Oracle Database architecture》也有精辟的讲述。

分享到:
评论

相关推荐

    Expert Oracle Database Architecture 3rd

    Tom Kyte and Darl Kuhn share a simple philosophy: "you can treat Oracle as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing ...

    Oracle RAC技术原理与运维概述.pdf

    早期的OPS(Oracle Parallel Server)在Oracle 6和8i中引入,随后在Oracle 9i RAC中首次亮相,正式引入了集群概念。Oracle 10g RAC引入了Grid Computing和Oracle Clusterware,进一步增强了集群的稳定性和性能。在...

    Oracle OCP 12C升级考试 060题库

    Oracle OCP(Oracle Certified Professional)是Oracle公司推出的数据库专业认证,12C是其第十二个版本,代表“云计算”(Cloud Computing)。OCP 12C升级考试是为了验证数据库管理员(DBA)对Oracle 12C数据库的...

    Oracle RAC技术原理与运维概述.pptx

    早期的OPS(Oracle Parallel Server)到Oracle 9i RAC,再到Oracle 10g RAC,RAC逐渐发展为支持Grid Computing和Oracle Clusterware。Oracle 11g引入了RAC One Node,这是一种简化版的RAC,适用于单实例高可用场景。...

    Oracle Oracle9i 帮助文档,精通Oracle.10g.pdf

    4. **数据仓库优化**:包括并行查询优化器(Parallel Query Optimizer)和物化视图,加速了大量数据的分析和处理。 5. **高级安全性**:增强了加密和审计功能,保护了敏感信息的安全。 然后,Oracle10g(10.2.x...

    Oracle 11g教程

    Oracle 11g通过其独特的网格计算(Grid Computing)、自我管理(Self-Managing Database)以及XML数据库(XML Database)等特性,为用户提供了前所未有的灵活性和可扩展性。 二、Oracle 11g的核心功能与优势 1. **网格...

    oracle数据库产品与发展史.pptx

    Oracle 10g和11g则进一步强化了Grid Computing的概念,如Automatic Storage Management (ASM)和Data Guard,提供了自动化管理和灾难恢复解决方案。 在与IBM的DB2和Microsoft的SQL Server的竞争中,Oracle以它的开放...

    Apress.Expert.Oracle.Database.Architecture.2nd.Edition

    Tom has a simple philosophy: you can treat Oracle as a black box and just stick data into it or you can understand how it works and exploit it as a powerful computing environment. If you choose the ...

    SHUniversitySpeech

    5. **Grid Computing**:Oracle倡导的网格计算理念,通过资源共享和分布式计算提升系统性能和可用性。 6. **Self-Managing Database**:Oracle数据库的自我管理特性,如自动调优和自动故障恢复,降低了管理复杂性,...

    MATLAB技术大数据处理方法.docx

    另外,Parallel Computing Toolbox 可以进一步实现分布式计算,以处理更大规模的数据集。 最后,完成数据分析后,结果的存储和导出同样重要。MATLAB 的 `save` 函数可以保存 MATLAB 变量为 MAT 文件,`writetable` ...

    大数据分析的十二个解决方案.pdf

    第一、EMC Greenplum Data Computing Appliance (DCA):EMC 的 Greenplum 是一个基于 MPP(Massive Parallel Processing)的数据库管理系统,能够处理大量的数据。EMC Greenplum Data Computing Appliance (DCA) 是...

    matlab开发-不同类型的信息管理.zip

    10. 并行计算:利用MATLAB的Parallel Computing Toolbox,可以在多核处理器或集群环境下并行处理大量数据,显著提高信息处理速度。 通过学习这个压缩包中的内容,开发者可以提升在MATLAB中管理不同类型信息的能力,...

    大数据分析的十二个解决方案 (2).docx

    9. Oracle Exadata数据仓库分析平台:Oracle推出了Exadata数据仓库分析平台,提供了高性能的数据分析和报表生成解决方案,支持成百上千的用户和各类应用操作。 10. HP Vertica云服务自动化解决方案:HP推出了基于...

    大数据分析的十二个解决方案 (3).pdf

    EMC Greenplum Data Computing Appliance (DCA) 是一种模块化的解决方案,能够处理多种数据类型,包括结构化、半结构化和非结构化数据。通过与SAS和MapR等合作伙伴,DCA 扩大了对Greenplum的数据库支持。 2.Hadoop ...

    华工综合的高性能复习题集(考试复习用).doc

    并行计算的架构主要有几种类型,包括PVP(Parallel Vector Processors)、SMP(Symmetric MultiProcessing)、MPP(Massively Parallel Processors)、DSM(Distributed Shared Memory)和Cluster。 PVP,如IBM的SP...

    Matlab_2014b_Crack(2015-04-09)

    Parallel Computing Toolbox Version 6.5 (R2014b) Partial Differential Equation Toolbox Version 1.5 (R2014b) Phased Array System Toolbox Version 2.3 (R2014b) Polyspace Bug Finder Version 1.2 (R2014b) ...

    大数据分析的十二个解决方案.docx

    第六个解决方案是微软的 Parallel Data Warehouse,Parallel Data Warehouse 是一个基于微软 SQL Server 的数据仓库解决方案,可以快速处理大量数据,并且提供了高效的数据分析能力。 第七个解决方案是 SAP 旗下...

    Beginning.R.An.Introduction.to.Statistical.Programming.2nd.Edition.148420

    This book shows the use of R in specific cases such as one-way ANOVA analysis, linear and logistic regression, data visualization, parallel processing, bootstrapping, and more. It takes a hands-on, ...

    大数据分析的杀手锏归纳.pdf

    1. **模块化EMC Appliance处理多种数据类型**:EMC Greenplum Data Computing Appliance (DCA) 是一款专为大数据设计的集成硬件和软件解决方案。它结合了EMC的存储技术和Greenplum的MPP数据库,支持大规模并行处理和...

Global site tag (gtag.js) - Google Analytics