Previous Topic: Tuning Buffers for PerformanceNext Topic: Using Read and Write Drivers


Using Chained Reads

What Chained Reads Do

Chained reads allows CA IDMS/DB to read multiple blocks from disk with a single I/O request. It can significantly reduce both elapsed and CPU times for applications that process multiple contiguous pages within an area.

CA IDMS/DB automatically uses chained reads under z/OS and z/VSE both in local and central version processing under these conditions:

How Chained Reads Work

When chained reads is active, a single start I/O reads up to an entire track at one time. If some of the pages are already in core, those pages are skipped (that is, they are not read).

When IDMS/DB processes an entire area, it issues multiple start I/Os. Under the central version, without read drivers, two start I/Os will be issued; in local mode, as many as ten start I/Os will be issued (subject to buffer pool size). IDMS/DB overlaps multiple start I/Os to reduce elapsed time.

Controlling the Use of Chained Reads

Under the central version, use the PREFETCH option of the DCMT VARY DMCL, AREA, FILE, or BUFFER commands to control when to use chained reads. ON is the default unless it is overridden by a PREFETCH=OFF SYSIDMS parameter. OFF takes precedence over ON for subordinate entities. For example, varying PREFETCH OFF for an area will disable it for all files associated with that area.

The default prefetch limit of 500 pages can be overridden by specifying a PREFETCH_BUF SYSIDMS parameter. In central version, it can also be overridden by using the following command:

DCMT VARY BUFFER <buffer-name> PREFETCH <limit>

For example, if the limit for a buffer pool is set to 300, then (provided that there are at least 300 buffer pages) chained reads will be used for all access to files associated with the buffer unless it is explicitly disabled at the file, area, or system level.

Monitoring Effectiveness

To determine the effectiveness of chained reads in your system, use the OPER WATCH DB IO command, which displays the number of start I/Os and pages read using chained I/O for a given task.

It is possible that certain applications or processing loads may either experience no improvement or incur increased overhead because chained reads may cause pages to be prematurely flushed from the buffer. If such a situation occurs, you can disable chained reads for local mode or central version by specifying PREFETCH=OFF as a SYSIDMS parameter.