什么进程读取缓冲区缓存的块?

时间:2015-02-20 12:34:57

标签: oracle architecture

DBWR 进程将缓冲区缓存中的脏块写入数据文件。
文档告诉块在将缓冲区缓存形成为结果集之前将其读取到缓冲区缓存中。但是" "那读书吗?你怎么称呼这个过程?

2 个答案:

答案 0 :(得分:4)

来自overview of server processes

  

Oracle数据库创建服务器进程以处理连接到实例的客户端进程的请求。客户端进程始终通过单独的服务器进程与数据库通信。

     

代表数据库应用程序创建的服务器进程可以执行以下一项或多项任务:

     
      
  • 解析并运行通过应用程序发出的SQL语句,包括创建和执行查询计划(参见" SQL处理阶段")

  •   
  • 执行PL / SQL代码

  •   
  • 将数据文件中的数据块读入数据库缓冲区缓存(DBWn后台进程的任务是将已修改的块写回磁盘)

  •   
  • 以应用程序可以处理信息的方式返回结果

  •   

因此,每个专用或共享服务器进程在从磁盘读取数据时都会填充缓冲区缓存。

写出修改过的块是通过一个通用的DBWR后台进程完成的,因此它可以是异步的,也可以组合来自多个会话的更改。您通常不希望您的应用程序在不必要时等待(慢)物理磁盘写入;它确实必须等待数据被读取,因此将它作为一个单独的后台进程并没有多大好处。

你没有明确地称这个过程,它只是在幕后处理。

答案 1 :(得分:1)

每个客户的会话进程都会读取数据文件。

因此,打开文件数量的OS内核限制公式包含:

#processes * #datafiles

您也可以使用Linux上的lsof轻松检查它。