VSAM RLS provides three levels of read integrity:
- NRI (no read integrity )
This level tells VSAM not to obtain a record
lock on the record accessed by a GET or POINT request. This avoids the overhead
of record locking. This is sometimes referred to as a “dirty” read
because the reader might see an uncommitted change made by another transaction.
Even with this option specified, VSAM RLS still performs buffer validity
checking and refreshes the buffer when the buffer is invalid. Thus, a sequential
reader of a KSDS does not miss records that are moved to new control intervals
by CI and CA splits.
There are situations where VSAM RLS temporarily
obtains a shared lock on the record even though NRI is specified. A shared
lock is one in which several tasks can hold the lock. This happens when the
read encounters an inconsistency within the VSAM sphere while attempting to
access the record.
- CR (consistent read)
This level tells VSAM to obtain a shared lock
on the record that is accessed by a GET or POINT request. It ensures that
the reader does not see an uncommitted change made by another transaction.
Instead, the GET or POINT request waits for the change to be committed or
backed out. The request also waits for the exclusive lock on the record to
be released.
- CRE (consistent read explicit)
This level has a similar
meaning as CR, except that VSAM RLS holds the shared lock on the record until
the end of the unit of recovery, or unit of work. CRE is not available to
VSAM RLS (non-DFSMStvs) non-CICS applications. CRE is valid only when used
by CICS® or in DFSMStvs mode because of the syncpoint nature of the locks.
VSAM can only handle an end-of-transaction for CICS. This capability is also called a repeatable
read.
The record locks obtained by the VSAM RLS GET requests, with
CRE option, inhibit the ability to update or erase the records by other concurrently
executing transactions. However, the CRE requests do not inhibit other transactions
from inserting other records.