Description of db_writer_processes and dbwr_io_slaves in Oracle initialization parameters

Source: Internet
Author: User

If you use dbwr_io_slaves, only one database writer process will be used, regardless of the setting for db_writer_processes.

Dbwr_io_slaves is mainly used to simulate asynchronous environments. It can improve Io read/write speed on OS that do not support asynchronous operations.
Multiple dbwr can obtain dirty blocks from data buffer in parallel and write them to the disk in parallel. However, multiple I/O slaves can only be obtained by one dbwr from the data buffer, while I/O slaves can be written in parallel.

Multiple slaves can write data files in parallel, while multiple dbwr can also write data files in parallel. One dbwr has multiple slaves which are used to collect dirty buffer while the slaves write data files, multiple dbwr can collect dirty buffer in parallel and write data files in parallel. If the system supports AIO, you do not need to set multiple dbwr or IO slaves.

Consider multiple database writer (dbwr) processes or I/O slaves
Grouping multiple database writer processes, or using I/O slaves, is useful when the transaction rates are high or when the buffer cache size is so large that a single dbwn process cannot keep up with the load.

Db_writer_processes
The db_writer_processes initialization parameter lets you configure multiple database writer processes (from dbw0 to dbw9 and from dbwa to dbwj ). processing ing multiple dbwr processes distributes the work required to identify buffers to be written, and it also distributes the I/O load over these processes. multiple dB writer processes are highly recommended for systems with multiple CPUs (at least one DB writer for every 8 CPUs) or multiple processor groups (at least as your DB writers as processor groups ).

Based upon the number of CPUs and the number of processor groups, Oracle either selects an appropriate default setting for db_writer_processes or adjusts a user-specified setting.

Dbwr_io_slaves
If it is not practical to use multiple dbwr processes, then Oracle provides a facility whereby the I/O load can be distributed over multiple slave processes. the dbwr process is the only process that scans the buffer cache LRU list for blocks to be written out. however, the I/O for those blocks is saved med by the I/O slaves. the number of I/O slaves is determined by the parameter dbwr_io_slaves.

Dbwr_io_slaves is intended for scenarios where you cannot use multiple db_writer_processes (for example, where you have a single CPU ). i/O slaves are also useful when asynchronous I/O is not available, because the multiple I/O slaves simulate nonblocking, asynchronous requests by freeing dbwr to continue identifying blocks in the cache to be written. asynchronous I/O at the operating system level, if you have it, is generally preferred.

Dbwr I/O slaves are allocated immediately following database open when the first I/O request is made. the dbwr continues to perform all of the dbwr-related work, apart from memory Ming I/O. i/O slaves simply perform the I/O on behalf of dbwr. the writing of the batch is parallreceived between the I/O slaves.

--------------------------------------------------------------------------------
Note:
Implementing dbwr_io_slaves requires that extra shared memory be allocated for I/O buffers and request queues. multiple dbwr processes cannot be used with I/O slaves. processing I/O slaves forces only one dbwr process to start.

--------------------------------------------------------------------------------

Choosing between multiple dbwr processes and I/O slaves
Processing ing multiple dbwr processes benefits performance when a single dbwr process is unable to keep up with the required workload. however, before processing ing multiple dbwr processes, check whether asynchronous I/O is available and configured on the system. if the system supports asynchronous I/O but it is not currently used, then enable asynchronous I/O to see if this alleviates the problem. if the system does not support asynchronous I/O, or if asynchronous I/O is already configured and there is still a dbwr bottleneck, then configure multiple dbwr processes.

--------------------------------------------------------------------------------
Note:
If asynchronous I/O is not available on your platform, then asynchronous I/O can be disabled by setting the disk_asynch_io initialization parameter to false.

--------------------------------------------------------------------------------

Using multiple dbwrs parallelizes the gathering and writing of buffers. therefore, multiple dbwn processes shocould deliver more throughput than one dbwr process with the same number of I/O slaves. for this reason, the use of I/O slaves has been deprecated in favor of multiple dbwr processes. i/O slaves shoshould only be used if multiple dbwr processes cannot be configured.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.