暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

数据库写进程 (DBWn)

原创 逆风飞翔 2021-11-05
2580

将数据库缓冲区高速缓存中经过修改的缓冲区(灰数据缓冲区)写入数据文件。DB_WRITER_PROCESSES 初始化参数指定 DBWn 进程数。DBWn 进程的最大数目为 20。如果用户在启动过程中未指定该进程数,Oracle DB 将根据 CPU 和处理器组的数量来决定如何设置 DB_WRITER_PROCESSES。DB_WRITER_PROCESSES=写进程的数量 ,默认cpu/8。

数据被修改过并且已经commit但是还未写入磁盘的数据缓存块,脏缓存块最终被DBWn进程写入到磁盘的数据文件中永久保存,进程DBWN在特定条件下将更新过的数据块写回磁盘,

如果我们要加快它写出块的速度,可以配置多个DBWn进程,11g 36 个 ,12c 64 个 19C 100

-------增加db_writer_processes一定要慎重

----官方建议:

Default value 1 or CPU_COUNT / 8, whichever is greater 默认值为1或CPU个数的1/8

[oracle@test ~]$ vmstat 5 ----对CPU当前信息进行采集,每5秒一次

SQL> show parameter cpu_count; ----查看当前cpu_count数

SQL> show parameter db_writer_processes; ----查看当前数据写进程数


在以下情况下,DBWn 进程将灰数据缓冲区写入磁盘:

1)当服务器进程在扫描阈值数目的缓冲区之后找不到干净的可重用缓冲区时,通知 DBWn 执行写操作。DBWn 在执行其它处理的同时,将灰数据缓冲区异步写入磁盘。

2)DBWn 定期写缓冲区以推进检查点。检查点是重做线程(日志)中开始执行实例恢复的位置。该日志位置由缓冲区高速缓存中最旧的灰数据缓冲区确定。

在所有情况下,DBWn 均执行成批(多块)写操作以提高效率。多块写操作中写入的块数因操作系统而异。
②日志写进程 (LGWR) :负责管理重做日志缓冲区,方法是将重做日志缓冲区条目写入磁盘上的重做日志文件。LGWR 会写入自上次写入以来复制到缓冲区中的所有重做条目。

该进程负责将buffer cache的脏数据写入到磁盘。DBW进程根据LRU算法,将最近最少被使用的buffer写入磁盘。

尽管一个数据库写入进程(DBW0)对于大多数系统来说已经足够了,但是如果系统大量修改数据可以配置其他进程dbw1到DBW9, DBWa到DBWz, BW36到bw99来提高写入性能。这些附加的DBW进程在单处理器系统上没有用处。

DBW进程在下列条件下将脏缓冲区写入磁盘:

1当服务器进程在扫描缓冲区的阈值数目后找不到干净的可重用缓冲区时,它向DBW发出写的信号。DBW在执行其他处理时,尽可能异步地将脏缓冲区写入磁盘。

2数据库执行检查点操作时。DBW定期写缓冲区来推进检查点,检查点是重做线程中实例恢复开始的位置。检查点的日志位置由缓冲区缓存中最老的脏缓冲区决定。

3修改表空间或数据文件离线时。

4 每三秒唤醒一次查看脏块数量,决定是否执行写入操作。

在许多情况下,DBW写的块分散在整个磁盘中。因此,写操作往往比LGWR执行的顺序写操作慢。DBW在可能的情况下执行多块写操作以提高效率。在多块写入中写入的块的数量因操作系统而异。

检查Oracle服务进程
$ps -ef|grep ora_|grep -v grep&&ps -ef|grep ora_|grep -v grep|wc –l


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论