Performance considerations overview

The functional and performance characteristics of IMS databases vary from one type of IMS databases to another. You will want to make an informed decision regarding the type of database organizations which will best serve your purposes.

The following lists briefly summarize the performance characteristics of the various full-function database types, highlighting efficiencies and deficiencies of hierarchical sequential, hierarchical direct, and general sequential databases.

General sequential (GSAM)
  • Supported by DCCTL
  • No hierarchy, database records, segments, or keys
  • No DLET or REPL
  • ISRT adds records at end of data set
  • GN and GU processed in batch or BMP applications only
  • Allows IMS symbolic checkpoint calls and restart from checkpoint (except VSAM-loaded databases)
  • Good for converting data to IMS and for passing data
  • Not accessible from an MPP or JMP region
  • Space efficient
  • Not time efficient
VSAM
  • Fixed- or variable-length records are usable
  • VSAM ESDS DASD stored
  • IMS symbolic checkpoint call allowed
  • Restart from checkpoint not allowed
BSAM/QSAM
  • Fixed-, variable-, or undefined-length records are usable
  • BSAM/QSAM DS tape or DASD stored
  • Allows IMS symbolic checkpoint calls and restart from checkpoint
Hierarchical sequential
Segments are linked by physical contiguity
HSAM
  • Supported by DBCTL
  • Physical sequential access to roots and dependents stored on tape or DASD
  • ISRT allowed only when database is loaded
  • GU, GN, and GNP allowed
  • Database update done by merging databases and writing new database
  • QSAM and BSAM accessible
  • Space efficient but not time efficient
  • Sequential access
HISAM
  • Supported by DBCTL
  • Hierarchical indexed access to roots
  • Sequential access to dependents
  • Stored on DASD
  • VSAM accessible
  • All DL/I calls allowed
  • Index is on root segment sequence field
  • Good for databases not updated often
  • Not space efficient with many updates
  • Time efficient with SSA-qualified calls
SHSAM
  • Supported by DBCTL
  • Simple hierarchical sequential access method to root segments only
  • ISRT allowed only when database is loaded
  • GU, GN, and GNP allowed
  • Database update done by reloaded database
  • QSAM and BSAM accessible
  • Allows IMS symbolic checkpoint calls and restart from checkpoint (except VSAM-loaded databases)
  • Good for converting data to IMS and for passing data
  • Not accessible from an MPP or JMP region
  • Space efficient
  • Not time efficient
SHISAM
  • Supported by DBCTL
  • Simple hierarchical indexed access to roots only
  • Stored on DASD
  • VSAM accessible
  • All DL/I calls allowed
  • Good for converting data to IMS and for passing data
  • Not space efficient
  • Time efficient
Hierarchical direct
Segments are linked by pointers
HDAM
  • Supported by DBCTL
  • Hashing access to roots
  • Sequential access by secondary index to segments
  • All DL/I calls allowed
  • Stored on DASD in VSAM ESDS or OSAM data set
  • Good for direct access to records
  • Hierarchical pointers allowed
    • Hierarchical sequential access to dependent segments
    • Better performance than child and twin pointers
    • Less space required than child and twin pointers
  • Child and twin pointers allowed
    • Direct access to pointers
    • More space required by additional index VSAM ESDS database
HIDAM
  • Supported by DBCTL
  • Indexed access to roots
  • Pointer access to dependent segments
  • All DL/I calls allowed
  • Stored on DASD in VSAM ESDS or OSAM data set
  • Good for random and sequential access to records
  • Good for random access to segment paths
  • Hierarchical pointers allowed
    • Hierarchical sequential access to dependent segments
    • Better performance than child and twin pointers
    • Less space required than child and twin pointers
  • Child and twin pointers allowed
    • Direct access to pointers
    • More space required by additional index VSAM ESDS database
HALDB partitioned hierarchical direct
Segments are linked by pointers. HALDB databases contain one to 1 001 partitions. HALDB databases are the best choice for large databases
PHDAM
  • Supported by DBCTL
  • Supports up to 1 001 partitions
  • Partitions support up to 10 database data sets and one indirect list data set (ILDS)
  • Maximum size for OSAM data sets is 4 or 8 GB and for VSAM data sets is 4 GB
  • Partitions within the database can be allocated, authorized, processed, reorganized, and recovered independently of the other partitions in the database
  • Parallel processing of partitions reduces reorganization times
  • Each partition can have a different root addressable area (RAA)
  • Indirect pointers are used for logical relationships and secondary indexes, which:
    • Allow for the automatic update, or self healing, of indirect pointers after database reorganizations
    • Require an ILDS for each partition
  • Hashing access to roots
  • Sequential access by secondary index to segments
  • All DL/I calls allowed
  • Stored on DASD in VSAM ESDS or OSAM data sets
  • Good for direct access to records
  • Direct pointers are used in logical relationships, and symbolic pointers are not supported
  • No hierarchical pointers
  • Child and twin pointers allowed
    • Direct access to pointers
    • More space required by additional index VSAM ESDS database
PHIDAM
  • Supported by DBCTL
  • Supports up to 1 001 partitions
  • Partitions support up to 10 database data sets, one primary index data set, and one indirect list data set (ILDS)
  • Maximum size for OSAM data sets is 4 or 8 GB and for VSAM data sets is 4 GB
  • Partitions within the database can be allocated, authorized, processed, reorganized, and recovered independently of the other partitions in the database
  • Parallel processing of partitions reduces reorganization times
  • Indirect pointers are used for logical relationships and secondary indexes, which:
    • Allow for the automatic update, or self healing, of indirect pointers after database reorganizations
    • Require an ILDS for each partition
  • Indexed access to roots
  • Primary index is a nonrecoverable database, so database update logs are smaller, even before they are compressed when moved to the SLDS
  • Record keys are stored in sequence within each partition; whether the sequence of records is maintained across partitions depends on the method of partition selection used
  • Pointer access to dependent segments
  • All DL/I calls allowed
  • Stored on DASD in a VSAM ESDS or OSAM data set
  • Good for random and sequential access to records
  • Good for random access to segment paths
  • Direct pointers are used in logical relationships and symbolic pointers are not supported
  • No hierarchical pointers
  • Child and twin pointers allowed
    • Direct access to pointers
    • More space required by additional index VSAM ESDS database
HALDB partitioned secondary index
PSINDEX
  • Supported by DBCTL
  • Supports up to 1 001 partitions
  • Partitions support only a single data set
  • Stored on DASD in VSAM KSDS data set
  • Maximum size of the VSAM data set is 4 GB
  • Do not need to rebuild after reorganizations of the indexed database because of the HALDB self-healing pointer process
  • Partitions within the partitioned secondary index (PSINDEX) can be allocated, authorized, processed, reorganized, and recovered independently of the other partitions in the database
  • Segments have a larger prefix than non-partitioned secondary indexes to accommodate both a 28-byte extended pointer set (EPS) and the length of the root key of the secondary index target segment
  • Does not support shared secondary indexes
  • Does not support symbolic pointers
  • Requires that the secondary index record segments have unique keys