Accessing a FOCUS Data Source

In this section:

How to:

MINIO is a new I/O buffering technique that improves performance by reducing I/O operations when accessing FOCUS data sources. With MINIO set on, no block is ever read more than once, and therefore the number of reads performed is the same as the number of tracks present. This results in an overall reduction in elapsed times when reading and writing.

With FOCUS data sources that are not disorganized, MINIO can greatly reduce the number of I/O operations for TABLE and MODIFY commands. I/O reductions of up to 50% are achievable with MINIO. The actual reduction varies depending on data source structure and average numbers of children segments per parent segment. By reducing I/O operations, elapsed times for TABLE and MODIFY commands also drop.

Syntax: How to Set MINIO

SET MINIO = {ON|OFF}

where:

ON

Does not read a block more than once; the number of reads performed will be the same as the number of tracks present. This results in an overall reduction in elapsed times when reading and writing. This value is the default.

OFF

Disables MINIO.

Using MINIO

MINIO reduces CPU time slightly while slightly raising memory utilization. MINIO requires one track I/O buffer per referenced segment type. Between 40K and 48K of above-the-line virtual memory is needed per referenced segment.

When MINIO is enabled, FOCUS decides for each command whether or not to employ it, and which data sources to use it with. It is possible in executing a single command referencing several data sources that MINIO might be used for some but not for others. Data sources accessed via indexes, or physically disordered through online updates, are not candidates for MINIO buffering. Physical disorganization, in this case, means that the sequence of selected records jumps all over the data source, as opposed to progressing steadily forward. When disorganization occurs, MINIO abandons its buffering techniques and resorts to the standard I/O methodology.

When reading data sources, MINIO is used with TABLE, TABLEF, GRAPH, MATCH and during the DUMP phase of the REBUILD command, provided the target data source is not accessed via an index or is physically disorganized.

When writing to data sources, MINIO is used with MODIFY but never with MAINTAIN, provided there is no CRTFORM or COMMIT subcommand. CRTFORMs indicate online transaction processing, which requires that completed transactions be written out to the data source. COMMITs are explicit orders to do so. These events are incompatible with MINIO minimization logic and therefore rule out its use.

As with reads, using MINIO with MODIFY also requires that a data source be accessed sequentially. Attempts to access an index, or to update physically disorganized data sources can cause MINIO to be disabled. In addition, frequent repositioning to previously accessed records, even within well-organized data sources, will cause MINIO to be disabled.

Determining If a Previous Command Used MINIO

How to:

Reference:

The ? STAT command is used to determine whether the previous data source access command employed MINIO.

Syntax: How to Determine If a Previous Command Used MINIO

To determine if a previous command used MINIO, issue the command:

? STAT

Example: Determining If a Previous Command Used MINIO

Typing ? STAT generates a screen similar to the following:

                     STATISTICS OF LAST COMMAND
 
RECORDS        =           0       SEGS CHNGD     =           0
LINES          =           0       SEGS DELTD     =           0
BASEIO         =          87       NOMATCH        =           0
TRACKIO        =          16       DUPLICATES     =           0
SORTIO         =           0       FORMAT ERRORS  =           0
SORT PAGES     =           0       INVALID CONDTS =           0
READS          =           1       OTHER REJECTS  =           0
TRANSACTIONS   =        1500       CACHE READS    =           0
ACCEPTED       =        1500       MERGES         =           0
SEGS INPUT     =        1500       SORT STRINGS   =           0
 
INTERNAL MATRIX CREATED: YES       AUTOINDEX USED:           NO
SORT USED:             FOCUS       AUTOPATH USED:            NO
MINIO USED:              YES

In the preceding example MINIO USED is displayed as YES. It may also display NO or DISABLED.

  • YES means that MINIO buffering has taken place reducing the number of tracks read/written to the FOCUS data source.
  • NO means that MINIO buffering has not taken place.
  • DISABLED means that MINIO buffering was started but terminated as no performance gains could be made. This does not mean that the command did not complete successfully. It only indicates that MINIO buffering began and ended during the read/write.

Reference: Restrictions for Using MINIO

Note the following restrictions when you are using the MINIO command:

  • When MINIO is used with MODIFY, all CHECK subcommands are ignored. If a MODIFY command terminates abnormally, the condition of the data source is unpredictable, and it should be restored from a backup copy and the update repeated. Since MINIO is designed to minimize I/O during large data source loads and updates, it has no checkpoint or restart facility. If this is unacceptable, set MINIO off.
  • MINIO is not used to access data sources through FOCUS Database Servers (formerly called sink machines) or HLI programs.
  • MINIO requires the presence of the TRACKIO feature. Meaning, TRACKIO must be set to ON which is the default setting. If TRACKIO is set to OFF, then MINIO is deactivated.
  • MINIO buffering starts when the FOCUS data source exceeds 64 pages in size. If this size is never reached, MINIO is never activated.
  • If the file being modified UPDATEs, INCLUDEs, or DELETEs a field that is indexed, MINIO is disabled. In other words, FIELDTYPE=I or INDEX=I is coded in the Master File for this field.
  • CRTFORM and COMMIT commands disable MINIO.
  • MAINTAIN procedures will not use MINIO buffering techniques.
  • MINIO is not enabled if the data source is physically disorganized by transaction processing.

Information Builders