Oracle Parallel Query(OPQ)可以将一个SQL statement分成多个片(chunks),然后在独自的CPU上通过多个process(子查询)进行并行运行。每个子查询同时读取一个大型表中的一块。所有子查询完毕以后,Oracle将结果会传给并行查询调度器,他会重新安排数据,如果需要则进行排序,并且将结果传递给最终用户。OPQ具有无限的伸缩性,因此,以前需要花费几分钟的全表检索目前的响应时间却不到1秒。
OPQ 严重依赖于处理器的数量,通过并行运行之所以能极大地提升全表检索的性能,其前提就是使用了 N-1 个并行进程( N=Oracle 服务器上 CPU 的数量)。Oracle 能够自动检测外部环境,包括服务器上 CPU 的数量。在安装时, Oracle9i 会检查服务器上 CPU 的数量,设置一个名为 cpu_count 的参数,并使用 cpu_count 作为默认的初始化输入参数。这些初始化参数会影响到 Oracle 对内部查询的处理。
一、相关参数
1.cpu_count
CPU_COUNT specifies the number of CPUs available to Oracle. On single-CPU computers, the value of CPU_COUNT
is 1. On most platforms, Oracle automatically sets the value of CPU_COUNT
to the number of CPUs available to your Oracle instance. Do not change the value of CPU_COUNT
.
2. parallel_min_servers
3.parallel_max_servers
Oracle一个显著的加强是自动决定OPQ并行的程度。由于Oracle清晰服务器中CPU的数量,他会自动分配合适的子进程的数量来提升并行查询的响应时间。当然,会有其他的外部因素,比如表的划分及磁盘输入/输出子系统的布局等,不过根据cpu_count来设置 parallel_max_servers参数将给Oracle一个合理的依据来选择并行的程度。
由于Oracle的并行操作严重依赖服务器上CPU的数量,parallel_max_servers会被设置成服务器上CPU的数量。如果在一台服务器上运行多个实例,则默认值太大了,会导致过度的页面交换和严重的CPU负担。并行的程度还依赖于目标表中分区的数量,因此 parallel_max_servers应该设置成足够大以允许Oracle为每个查询选择最佳数量的并行子查询。
4.parallel_automatic_tuning
TRUE : ORACLE会尽量使用PARALLEL.
5.fast_start_parallel_rollback
Oracle并行机制中一个令人兴奋之处是在系统崩溃时调用并行回滚的能力。当Oracle数据库发生少有的崩溃时,Oracle能自动检测未完成的事务并回滚到起始状态。这被称为并行热启动,而Oracle使用基于cpu_count的fast_start_parallel_rollback参数来决定未完成事务的并行程度。能够在Oracle数据库崩溃后极大地加快其重新启动的速度。此参数的默认值是系统CPU数量的两倍,不过一些DBA们认为应该将这个值设置为cpu_count的四倍。
FAST_START_PARALLEL_ROLLBACK
determines the maximum number of processes that can exist for performing parallel rollback. This parameter is useful on systems in which some or all of the transactions are long running.Values:
-
FALSE
indicates that parallel rollback is disabled
-
LOW
limits the number of rollback processes to 2 * CPU_COUNT
-
HIGH
limits the number of rollback processes to 4 * CPU_COUNT
6.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字节的倍数。
7.db_block_lru_latches
二、OPQ的使用
OBJECT级
ALTER TABLE/INDEX XXX PARALLEL (DEGREE 1 INSTANCES 1)
OR
ALTER TABLE/INDEX XXX NOPARALLEL;
OR
Alter table customer parallel degree 35;
STATEMENT级
SELECT --+ PARALLEL (table_alias, degree, nodes) from table …..
或
SQLLDR
SQLLOAD scott/tiger CONTROL=con1.ctl DIRECT=TRUE PARALLEL=TRUE
Parallel Recovery
1,RECOVERY_PARALLELISM
2,RECOVER TABLESPACE tab PARALLEL (DEGREE 4);
RECOVER DATABASE PARALLEL (DEGREE DEFAULT);
三、OPQ的局限性
Paralle Query并不一定是最好的,尤其是武断的把所有TABLE都设置成Paralle Query更是危险的,因为CBO会改变评估标准而尽量使用parallel full-table scans而不是index scans。因为CBO认为parallel full-table scan的cost比full-table scan低,所以如果非要这么做,那么需要调整optimizer_index_cost_adj。此值默认是1000,如果调整为10则基本都会用 INDEX,那么可以调整为小于1000的某个值,然后及时监控性能并再作调整。
ORACLE 提供了CBO、RBO两种SQL优化器:
1.Rule Based Optimizer(RBO)基于规则;
2.Cost Based Optimizer(CBO)基于成本,或者讲统计信息.
四、相关数据字典
select * from v_$pq_sysstat;
select * from v_$px_process;
select * from v_$px_sesstat;
select * from v_$px_process_sysstat;
相关推荐
标题:Oracle Parallel 并行处理 描述:在Oracle数据库中,通过并行处理技术,一个SQL语句可以被多个线程或进程同时处理,从而显著提升执行效率。 ### Oracle并行处理技术概述 Oracle并行处理是Oracle企业版提供的...
Oracle 的 Parallel 并行技术案例详解 Oracle 的 Parallel 并行技术是指在数据库系统中实现并行处理的技术,通过将一个大的任务分解成多个小的任务,并利用多个进程或线程来并发执行这些小任务,从而提高系统的处理...
在 Oracle 中,可以通过一些提示(hint)来控制并行执行,如使用“parallel”提示来指定查询并行执行时应该使用的线程数。同时,还有一些数据库配置参数可以控制并行操作的各个方面,比如系统级别的并行处理的限制,...
Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1、错误描述 ORA-12801: 并行查询服务器P007中发出错误信号 ORA-01722:无效...
当Oracle实例启动时,会根据初始化参数`PARALLEL_MIN_SERVERS`预先分配一定数量的并行服务进程。这个参数定义了最小的并行服务进程数量。当某个SQL语句被判定需要并行执行时,Oracle会根据并行度的要求动态调整并行...
首先,Oracle SQL并行处理(Parallel Query)是Oracle数据库提供的一种提高大数据量查询性能的关键特性。它通过将一个大的查询任务分解为多个子任务,分配给多个处理器或服务器进行并行处理,从而显著缩短查询时间。...
本文讨论了Volcano模型,一个可扩展和并行的查询评估系统。Volcano模型是由Goetz Graefe开发的,旨在数据库查询处理方面,提供了一个研究和教育环境。它特别关注查询优化和资源分配,以及在并行查询执行系统设计中...
### Oracle Parallel SQL详解 #### 一、并行SQL概念与优势 **并行SQL**(Parallel SQL)是一种在Oracle数据库中提高SQL语句执行效率的技术。通过并行处理,一个SQL语句可以在多个线程或进程中同时执行,充分利用...
Parallel I/O for Cluster Computing Foreword Introduction Part One - Cluster Computing and I/Os Chapter 1 - Motivating I/O Problems and their Solutions Chapter 2 - Parallel Sorting on ...
Oracle8i Parallel Server是Oracle数据库的一个重要特性,它在8.1.6版本中得到了进一步的优化和增强,旨在提供高可用性和高性能的解决方案。Oracle Parallel Server允许多个进程同时访问和处理数据库,以提高系统...
Oracle8i Parallel Server Concepts Release 2 (8.1.6) 本资源概述Oracle8i Parallel Server Concepts Release 2 (8.1.6),它是Oracle Corporation于1999年12月发布的一份技术文档。该文档详细介绍了Oracle8i ...
《Cable-Driven Parallel Robots》 (作者:Tobias Bruckmann • Andreas Pott) 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权...
《Oracle8i Parallel Server Administrator’s Guide Release 2 (8.1.6) for Windows NT》是Oracle公司为Windows NT平台发布的关于Oracle8i并行服务器管理的指南,旨在帮助管理员有效地管理和优化Oracle数据库在...
常见的空闲事件有 dispatcher timer、lock element cleanup、Null event、parallel query dequeue wait、parallel query idle wait - Slaves 等。 非空闲等待事件专门针对 Oracle 的活动,指数据库任务或应用运行...
Oracle并行查询(OPQ)是Oracle数据库系统中一项强大的特性,它利用现代硬件的多处理器能力,显著提升大规模数据操作的效率。随着硬件的进步,尤其是对称多处理(SMP)服务器的普及,Oracle从Oracle8i版本开始在各个...
### Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL选项下REDO、UNDO及执行速度的比较 #### 1. 引言 在Oracle数据库管理中,了解不同操作模式下REDO与UNDO的生成量以及这些操作对执行速度的影响至关重要。这有助于...
Oracle并行查询(OPQ)是Oracle数据库系统中一种强大的特性,旨在利用多CPU系统的能力,提高查询性能和响应时间。随着硬件的发展,服务器经常配备8个、16个甚至32个CPU,Oracle数据库也相应地实现了并行性功能。自...
DSI是Data Server Internals的缩写,是Oracle公司内部用来培训Oracle售后工程师使用的教材.由于某种原因流落江湖, 受到众多Oracle爱好者的追捧, 不过要是功力不到, 阅读反而无益. DSI3是Oracle 8系列的, DSI4是Oracle...
11. 一些并行操作都不支持,包括 Parallel query,Parallel DML,Parallel index build,Parallel Data Pump export and import。 12. 不支持 Streams,又少了一个高可用性的可行性方案。 13. 不支持 Advanced ...
并行服务器(Parallel Server)和并行查询(Parallel Query)是实现这一功能的关键技术。 10. **分布式数据库**:Oracle支持分布式数据库系统,通过分布式事务处理(Distributed Transactions)和全局名称(Global ...