数据库写入器(DBWn)
数据库写入器是Oracle的一个后台进程,所谓后台进程是相对于前台进程(服务器进程)来讲的。DBWn的"n"代表一个实例是可以有多个数据库写入器的。
作用:DBWn的作用就是将变脏了的缓冲区从数据库缓冲区缓存中写入到磁盘中的数据文件中去。
数据库缓冲区缓存,内存区域和数据库写入器相对来说很重要,别的数据库产品像mySql也都有对应的实现,只不过叫法不一样罢了。要时刻意识到会话是不会直接更新磁盘数据的,会话的更新,插入,删除包括查询等都是先作用到缓冲区上,随后,DBWn会将其中的脏缓冲区转储到磁盘上去。
DBWn什么时候写入?
DBWn它会尽可能少的进行写入,在以下四种情况它会执行写入:
a.没有任何可用缓冲区
b.脏缓冲区过多
c.3秒超时
d.遇到检查点,即checkPoint(检查点),检查点是个Oracle事件,遇到检查点,DBWn会执行写入。比如实例有序关闭的时候会有检查点,DBWn会将所有脏缓冲区写入到磁盘上去的,要保持数据文件的一致性。
注意:
从上述DBWn的几个写入时机,DBWn的写入不是直接依赖于会话的更新操作的。不是一有脏缓冲区,它就执行写入。而且,DBWn执行写入跟commit操作也没有任何关系。
DBWn采用极懒算法进行写入,原因是:频繁的磁盘IO对系统的压力很大,如果DBWn很积极地去写入磁盘,对系统性能的影响就太大了,如果DBWn很勤快的写磁盘,那么数据库缓冲区存在的意义也就不大了。