在一个单独的服务器中安装更多的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所示的逻辑块。
图 A

由OPQ划分的表
一旦表被划分成块,Oracle启用并行的子查询(有时称为杂务进程),每个子查询同时读取一个大型表中的一块。所有子查询完毕以后,Oracle将结果会传给并行查询调度器,它会重新安排数据,如果需要则进行排序,并且将结果传递给最终用户。OPQ具有无限的伸缩性,因此,以前需要花费几分钟的全表检索现在的响应时间却不到1秒。
OPQ严重依赖于处理器的数量,通过并行运行之所以可以极大地提升全表检索的性能,其前提就是使用了N-1个并行进程(N=Oracle服务器上CPU的数量)。
必须注意非常重要的一点,即Oracle9i能够自动检测外部环境,包括服务器上CPU的数量。在安装时,Oracle9i会检查服务器上CPU的数量,设置一个名为cpu_count的参数,并使用cpu_count作为默认的初始化输入参数。这些初始化参数会影响到Oracle对内部查询的处理。
下面就是Orale在安装时根据cpu_count而设置的一些参数:
|
参数
让我们进一步看看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参数之一,通常存在下面几个配置错误:
参数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并行查询(OPQ)是Oracle数据库系统中一种强大的特性,旨在利用多CPU系统的能力,提高查询性能和响应时间。随着硬件的发展,服务器经常配备8个、16个甚至32个CPU,Oracle数据库也相应地实现了并行性功能。自...
在Oracle数据库系统中,并行查询(Parallel Query, PQ)是一项强大的特性,它通过将查询任务分解为多个子任务并行执行来提升性能。然而,并行查询并非总是能带来性能提升,其效果取决于多种因素。本文将详细介绍如何...
在多核架构和多磁盘设备环境下,Oracle的并行处理能够使单个会话同时利用多个CPU或磁盘设备,极大地提升了适合并行处理的SQL语句的性能。 ### Oracle并行处理的实现 #### 1. Oracle Parallel SQL(并行SQL) 并行...
1. **并行查询(Parallel Query, PQ)**:并行查询是指将一个大的查询操作分成多个小的任务,这些小任务可以由不同的进程同时执行。例如,在进行全表扫描时,可以将表分成多个分区,每个分区由一个或多个并行执行...
- **并行查询**:在并行查询中,一个复杂的SQL语句被分解成多个较小的子任务,这些子任务可以由不同的进程同时执行。例如,在进行大表扫描时,可以将表分成多个分区,每个分区由一个独立的进程处理。 - **并行DDL...
Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1、错误描述 ORA-12801: 并行查询服务器P007中发出错误信号 ORA-01722:无效...
在并行查询中,大型的SELECT语句会被分解为多个小任务,分配给多个处理器或服务器节点执行。这些节点同时工作,各自处理部分数据,然后将结果合并,大大加速了查询过程。 多处理器计算机体系结构,尤其是大规模并行...
并行查询是并行操作的基础技术之一,允许使用多个操作系统级别的server process来同时完成一个SQL查询。这种技术在面对大规模数据集和长时间运行的查询任务时尤为重要。在启动并行查询之前,必须考虑以下前提条件: ...
Oracle并行查询是Oracle数据库系统中的一个重要特性,它允许数据库以多线程或多进程的方式执行复杂的SQL查询,从而充分利用多核CPU的计算能力,显著提高数据处理速度。在大规模数据仓库和高性能计算环境中,这种并行...
oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...
如果决定使用并行执行,则会根据可用资源的数量(如处理器核心数、内存等)将查询分解为多个可并行执行的部分。这些部分可能包括但不限于表扫描、索引扫描、连接操作等。每个部分都可以由单独的工作进程来处理,最后...
并行查询是指将一个 SQL Select 语句分解成多个较小的查询,每个部分的查询并发地运行,然后将各个部分的结果组合起来,提供最终的结果。并行查询通常用于全表扫描、索引全扫描、大表的扫描和连接、创建大的索引、...
1. **并行查询(Parallel Query)**:并行查询将大型SQL SELECT语句分割成多个子查询,这些子查询同时执行,然后合并结果。这在全表扫描、索引全扫描、大表连接、创建大索引、分区索引扫描以及大批量的插入、更新和...
### 在双机集群环境下Oracle并行服务的实现分析 #### 概述 随着信息技术的不断发展,企业对于数据处理能力和系统稳定性的要求越来越高。传统的单机架构已经难以满足这种需求,因此,集群技术应运而生。本文主要探讨...
并行处理就是利用多个CPU和I/O资源来执行单个数据库操作。尽管现在每个主要的数据库供应商都声称可以提供并行处理能力,但每个供应商所提供的体系结构其实存在关键的差异。本文讨论Oracle9i并行处理的体系结构,并...
### ORACLE数据库优化之SQL语句的并行处理 #### SQL语句并行处理的重要性与优势 在现代信息系统的高效...通过细致的规划和优化,可以最大化地发挥Oracle数据库的并行处理能力,为用户提供更加快速、稳定的查询体验。
解决 Oracle CPU 高度消耗(100%)的数据库问题 一、Oracle CPU 高度消耗(100%)的数据库问题概述 Oracle 数据库是许多企业的核心系统之一,然而,当 Oracle 数据库出现 CPU 高度消耗(100%)的问题时,整个系统...
并行查询(Parallel Query)是这一特性的核心组成部分,它允许数据库系统利用多个操作系统级别的Server Process同时处理SQL查询,从而显著缩短执行时间。在OLAP(在线分析处理)和数据仓库环境中,这种技术尤其常见...