Changing the sequence of segment types
In general, performance is best if frequently used dependent segments are close to the root segment and infrequently used dependent segments are toward the end of the database record.
This arrangement maximizes performance because all types of databases (except HSAM) have direct (therefore, fast) access to root segments. But, after the root is located, dependent segments are found by one of the following:
- Searching sequentially through the database record (HSAM and HISAM)
- Following pointers from the root segments to a dependent path and then searching through twin chains until the correct segment is reached (HDAM, HIDAM, PHDAM, and PHIDAM).
One way to determine whether the order of dependent segment types in your hierarchy is an efficient one is to examine the IWAITS/CALL field on the DL/I Call Summary report.
Related Reading: For detailed information about interpreting the DL/I Call Summary report, see IMS Version 15.3 System Administration.
The IWAITS/CALL field tells you, by DL/I call against a specific segment, the average number of times a segment had to wait for I/O operations to finish before the segment could be processed. A high number (and high, of course, is relative to the application) indicates that multiple I/O operations were required to process the segment.
If the database does not need to be reorganized, the high number can mean this is a frequently used segment type placed too far from the beginning of the database record. If you determine this is the situation, you can change placement of the segment type. The change can increase the value in the IWAITS/CALL field for other segments.
To change the placement of a segment type, you must write a program to unload segments from the database in the new hierarchical sequence. (The reorganization utilities cannot be used to make such a change.) Then you need to load the segments into a new database. Again, you must write a program to reload.