在索引create 和rebuild的时候,在CPU 允许的情况下,我们可以使用parallel来加快操作的速度,但长期开并行会严重影响服务器性能。
对于OLTP类型的数据库,除非只用于做统计、报表类的表或索引,建议不对相关表或索引调置并行度。
Oracle在并行处理时,会启动多少个并行进程来同时执行任务,并行度越高, 并行进程越多,执行速度 会越快,默认是noparallel,如果我们设置并行度为default值,那么此时的并行度是:服务器CPU数*每个CPU启用的线程数(PARALLEL_THREADS_PER_CPU)
经验值是4个U对应一个并行。
所以一般我们建议使用Noparallel,或者将并行度设置为1,而不是default;可以通过dba_tables 和 dba_indexes 视图的degree 字段来查看相关对象的并行度。
【查看并行参数】
SQL> show parameter PARALLEL_THREADS_PER_CPU
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
parallel_threads_per_cpu integer 2
SQL> show parameter parallel_max_servers
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
parallel_max_servers integer 20
很多人会忽略一个问题:
就是在我们用并行来rebuild索引的时候,rebuild结束后,我们索引的并行度也会改成我们rebuild的并行度,所以在我们rebuild 结束之后还需要对索引的并行度进行一个修改操作。
代码操作示例如下:【创建索引开并行后关并行】
SQL> create table dave(object_id int,name varchar2(20));
Table created.
SQL> create index idx_dave_id on dave(object_id);
Index created.
SQL> select degree from all_indexes where index_name='IDX_DAVE_ID';
DEGREE
------------
1
SQL> alter index idx_dave_id rebuild parallel 4;(重建索引开并行)
Index altered.
SQL> select degree from all_indexes where index_name='IDX_DAVE_ID';
DEGREE
------------
4
SQL> alter index idx_dave_id noparallel;(索引重建完毕后关闭并行)
Index altered.
SQL> select degree from all_indexes where index_name='IDX_DAVE_ID';
DEGREE
------------
1
使用并行来处理时,我们可以通过v$px_session 来查看相关的等待事件:
SQL> select a.sql_id,a.event,count(*)from v$session a,v$px_session b where a.sid=b.sid group by a.sql_id,a.event;
no rows selected
【修改表的并行度】当设置表的并行度非常高的时候,sql优化器将可能对表进行全表扫描,引起 Direct Path Read 等待 。
alter table t parallel(degree 1);------直接指定表的并行度
alter table t parallel; ----------设置表的并行度为default
【在sql语句中使用并行(并行度设为4)】
SELECT /*+ PARALLEL(4) */ MAX(sal),AVG(comm)FROM emp,dept WHERE emp.deptno=dept.deptno GROUP BY 1;
【注意】在并行操作中默认情况并行查询和并行DDL操作可以无障碍使用并行,但是如果想使用并行DML,需要先修改dml并行配置
alter session enable parallel dml;
【并行查询的使用范围】
适用于:
大表查询,join,分区索引的查询,
创建大量的index,
创建大量的表(包括固化视图),
批量的insert,update,delete;
cpu利用不足,
足够的内存用于其他操作,排序,hash,缓存,
不适合于:
非常短的查询或事务
分享到:
相关推荐
Oracle并行度主要分为以下几类: 1. **并行查询(Parallel Query)**:并行查询将大型SQL SELECT语句分割成多个子查询,这些子查询同时执行,然后合并结果。这在全表扫描、索引全扫描、大表连接、创建大索引、分区...
- **合理设置并行度**:根据查询特性和系统资源情况,合理调整并行度参数,避免过低或过高。 - **数据分布与分区**:确保数据在磁盘上均匀分布,采用合适的分区策略,避免热点问题,以提高并行读取和写入的效率。 - ...
### Oracle并行SQL指南 #### 一、理解并行SQL的概念 在Oracle数据库中,并行SQL(Parallel SQL)是一种能够显著提升SQL语句执行效率的技术。传统的串行SQL执行方式中,一个会话只能利用一个CPU核心或者一个磁盘...
### Oracle并行查询优化 #### 一、引言 在Oracle数据库系统中,并行查询(Parallel Query, PQ)是一项强大的特性,它通过将查询任务分解为多个子任务并行执行来提升性能。然而,并行查询并非总是能带来性能提升,...
3. **`PARALLEL_DEGREE_POLICY`**:控制并行度策略,可以通过设置为`AUTO`、`LIMITED`或`MANUAL`来决定并行执行的程度。 4. **`PARALLEL_THREADS_PER_CPU`**:指定每颗CPU上运行的并行线程数。合理配置此参数可以...
### Oracle并行执行基础 #### 并行执行概念 并行执行是数据库处理技术中的一个核心组成部分,尤其在处理大规模数据集时尤为重要。通过利用多个处理器或进程来完成单一任务,能够显著提升查询效率和整体性能。对于...
在启用并行查询时,需要注意系统的资源负载状况,以确定合适的并行度。并行度可以通过参数 cpu_count 和 parallel_threads_per_cpu 来确定。 二、 并行 DML 并行 DML 是指在 DML 操作(Insert、Update、Delete、...
Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1、错误描述 ORA-12801: 并行查询服务器P007中发出错误信号 ORA-01722:无效...
考虑到表的分区数量和其他系统因素,`parallel_max_servers`应足够大,以允许Oracle为每个查询选择最佳的并行度。 3. `log_buffer`参数定义了redo日志缓冲区的大小,它直接影响redo日志的写入性能。Oracle建议`log_...
Oracle数据库是一种广泛应用于企业级环境的关系型数据库管理系统,以其高级结构化查询语言(SQL)为核心。...在实际应用中,需要根据业务需求和系统资源来调整并行度和并行策略,以达到最佳性能和资源利用率。
然后,通过调整数据库参数,如`PARALLEL_DEGREE_POLICY`,可以设置并行度,决定何时以及如何使用并行服务。 在实际应用中,可能遇到的问题包括资源调度、负载均衡、网络延迟和并发控制等。对于资源调度,Oracle的...
Oracle并行查询是Oracle数据库系统中的一个重要特性,它允许数据库以多线程或多进程的方式执行复杂的SQL查询,从而充分利用多核CPU的计算能力,显著提高数据处理速度。在大规模数据仓库和高性能计算环境中,这种并行...
Oracle并行查询(OPQ)是Oracle数据库系统中一种强大的特性,旨在利用多CPU系统的能力,提高查询性能和响应时间。随着硬件的发展,服务器经常配备8个、16个甚至32个CPU,Oracle数据库也相应地实现了并行性功能。自...
此外,Oracle并行处理组件还能与其他关键组件如RealApplication Clusters无缝集成,提供高可用性和可伸缩性。 Oracle9i的并行处理框架还包括对并行查询的优化,能够智能地将大型查询分解为多个小任务,分配给不同的...
Oracle Database采用全共享架构,它不需要预定义的数据分区,可以根据需要灵活调整并行度。 在Oracle中,处理并行SQL语句时,数据库会根据工作负载和资源可用性自动决定并行度。DBA可以通过初始化参数来控制并行...
Oracle Redo并行机制是Oracle数据库中用于优化日志写入性能的一种策略,尤其是在高...通过调整`log_parallelism`等参数,数据库管理员可以根据系统的实际负载情况优化Redo Log Buffer的并行度,实现更高效的日志处理。
### Oracle 12c资源管理器(resource manager)详解 #### 一、Oracle 数据库资源管理器概述 在Oracle 12c中,资源管理器(Resource Manager)是一个强大的工具,它能够帮助管理员有效地管理数据库中的多个工作负载,...
然而,实现并行处理需要考虑数据库的配置、数据的分布特性以及系统的整体负载,合理设置并行度和并行进程池的大小,以达到最佳的性能平衡。通过细致的规划和优化,可以最大化地发挥Oracle数据库的并行处理能力,为...
这可能涉及调整数据库的初始化参数,如`PARALLEL_DEGREE_POLICY`(控制并行度自动调整策略)、`MAX_PARALLELISM`(限制最大并行度)等。同时,还需要密切关注系统的负载和性能指标,以确保并行操作带来的收益大于其...