Oracle数据库进程之从属进程详解

数据库 Oracle
本文我们主要介绍了Oracle数据库进程之从属进程的相关知识,希望本次的介绍能够对您有所收获!

上次我们介绍了:Oracle数据库进程之后台进程详解,本文我们看一下最后一类Oracle 进程:从属进程(slave process)。Oracle 中有两类从属进程:I/O 从属进程和并行查询从属进程。接下来我们分别开始介绍。

I/O 从属进程

I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O。例如,磁带设备(相当慢)就不支持异步I/O。通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会从要写的数据列表中删除这批数据。

采用这种方式,可以得到更高的吞吐量,这是因为会由I/O 从属进程来等待慢速的设备,而原来的调用进程得以脱身,可以做其他重要的工作来收集下一次要写的数据。

I/O 从属进程在Oracle 中有两个用途。DBWn 和LGWR 可以利用I/O 从属进程来模拟异步I/O,另外RMAN写磁带时也可能利用I/O 从属进程。

有两个参数控制着I/O 从属进程的使用:

BACKUP_TAPE_IO_SLAVES:这个参数指定RMAN 是否使用I/O 从属进程将数据备份、复制或恢复到磁带上。由于这个参数是围绕着磁带设备设计的,而且磁带设备一次只能由一个进程访问,所以这个参数是一个布尔值,而不是所用从属进程的个数(这可能出乎你的意料)。RMAN 会为所用的物理设备启动多个必要的从属进程。BACKUP_TAPE_IO_SLAVES = TRUE 时,则使用一个I/O 从属进程从磁带设备读写。如果这个参数为FALSE(默认值),就不会使用I/O从属进程完成备份。相反,完成备份的专用服务器进程会直接访问磁带设备。

DBWR_IO_SLAVES:这个参数指定了DBW0 进程所用I/O 从属进程的个数。DBW0 进程及其从属进程总是将缓冲区缓存中的脏块写至磁盘。这个值默认为0,表示不使用I/O 从属进程。注意,如果将这个参数设置为一个非0 的值,LGWR 和ARCH 也会使用其自己的I/O 从属进程,LGWR 和ARCH 最多允许4 个I/O 从属进程。

DBWR I/O 从属进程的名字是I1nn,LGWRI/O 从属进程的名字是I2nn,这里nn 是一个数。

并行查询从属进程

Oracle7.1.6 引入了并行查询功能。这个功能是指:对于SELECT、CREATE TABLE、CREATE INDEX、UPDATE 等SQL 语句,创建一个执行计划,其中包含可以同时完成的多个(子)执行计划。将每个执行计划的输出合并在一起构成一个更大的结果。其目标是仅用少量的时间来完成操作,这只是串行完成同一操作所需时间的一小部分。

例如,假设有一个相当大的表,分布在10 个不同的文件上。你配置有16 个CPU,并且需要在这个表上执行一个即席查询。另一种方法是:可以将这个查询计划分解为32 个小部分,并充分地利用机器;而不是只使用一个进程串行地读取和处理所有数据。相比之下,前一种做法要好得多。

使用并行查询时,会看到名为Pnnn 的进程,这些就是并行查询从属进程。处理一条并行语句时,服务器进程则称为并行查询协调器(parallelquery coordinator)。操作系统上服务器进程的名字并不会改变,但是阅读有关并行查询的文档时,如果提到了协调器进程,你应该知道这就是原来的服务器进程。

关于Oracle数据库进程之从属进程的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获。

Oracle进程系列相关文章:

Oracle数据库进程之服务器进程详解

Oracle数据库进程之后台进程详解

【编辑推荐】

  1. Oracle 10g内存结构之系统全局区简介
  2. Oracle数据库中行转列以及Join用法总结
  3. Oracle regexp_like的相关知识及使用示例
  4. Oracle 10g内存结构之共享池的相关知识及使用简介
  5. Oracle 10g内存结构之排序区和Java池的相关知识简介
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2011-08-24 10:31:10

Oracle数据库进程后台进程

2011-08-24 10:15:55

Oracle数据库服务器进程

2011-03-25 11:13:15

Oracle数据库进程

2010-04-06 18:04:09

Oracle数据库

2010-04-02 09:44:23

Oracle数据库

2010-04-09 16:40:01

Oracle数据库

2011-05-19 13:25:14

Oracle数据库

2020-04-29 15:10:16

Linux命令进程

2010-04-16 09:41:42

Oracle数据库查看

2011-03-11 15:49:52

Oracle数据库

2010-04-14 15:14:11

Oracle数据库

2010-04-02 13:59:08

Oracle数据库

2011-03-29 10:47:49

ORACLE数据库

2010-04-29 16:36:19

Oracle数据库

2011-08-18 15:49:21

Oracle厉行计划

2011-05-17 15:02:15

ORACLE数据库备份

2011-04-11 13:19:41

Oracle数据库

2011-08-05 09:33:56

OracleUser ProcesServer Proc

2016-12-30 14:56:06

Native进程Trace

2018-10-12 11:11:39

Oracle内存结构
点赞
收藏

51CTO技术栈公众号