Allocating an ILDS
The ILDS manages pointers for HALDB partitions that include either logical relationships or a secondary index.
Partitioning a database can complicate the use of pointers between database records because after a partition has been reorganized the following pointers may become invalid:
- Pointers from other database records within this partition
- Pointers from other partitions that point to this partition
- Pointers from secondary indexes
The use of indirect pointers eliminates the need to update pointers throughout other database records when a single partition is reorganized. The Indirect List data set (ILDS) acts as a repository for the indirect pointers. There is one ILDS per partition in PHDAM and PHIDAM databases.
The ILDS contains indirect list entries (ILEs). Each ILE in an ILDS has a 9-byte key that is the indirect list key (ILK) of the target segment appended with the segment code of the target segment. The ILK is a unique token that is assigned to segments when the segments are created.
After a reorganization reload or a migration reload of segments involved in inter-record pointing, the ILE is updated to reflect the changes in location of the target segment of the ILE. Segments involved in inter-record pointing can be one of the following types:
- Physically paired logical children
- Logical parents of unidirectional logical children
- Targets of secondary indexes
The following sample command defines an ILDS. Note that the key size is 9 bytes at offset 0 (zero) into the logical record. Also note that the record size is specified as 50 bytes, the current length of an ILE.
DEFINE CLUSTER ( -
NAME (FFDBPRT1.XABCD01O.L00001) -
TRK(2,1) -
VOL(IMSQAV) -
FREESPACE(80,10) -
REUSE -
SHAREOPTIONS(3,3) -
SPEED ) -
DATA ( -
NAME(FFDBPRT1.XABCD01O.INDEXD) -
CISZ(8192) -
KEYS(9,0) -
RECSZ(50,50) ) -
INDEX ( -
NAME(FFDBPRT1.XABCD01O.INDEXS) -
CISZ(2048) )
To compute the size of an ILDS, multiply the size of an ILE by the total number of physically paired logical children, logical parents of unidirectional relationships, and secondary index targets.
The inclusion of free space in the ILDS can improve the performance of ILDS processing by reducing CI and CA splits. Both the HD Reorganization Reload utility (DFSURGL0) and the HALDB Index/ILDS Rebuild utility (DFSPREC0) provide a free space option that uses the VSAM load mode to update or rebuild the ILDS. VSAM load mode adds the free space that is called for by the FREESPACE parameter of the DEFINE CLUSTER command.