WSC IBM Z
|Abstract: This flash explains the use of VSAM buffer pools and subpools for IMS full function database data sets. The implementation of z/OS 1.3 may cause changes in KSDS index component CI sizes when these KSDSs are redefined. This is explained in Flash10180, “IMS Warning for z/OS V1 R3 Change in KSDS CI Size Calculation.” When CI sizes change, IMS may use different VSAM buffer pools for database data sets. The following is an explanation of how IMS builds VSAM buffer pools and how it assigns data sets to them.|
|Definition of VSAM Pools and Subpools|
IMS may build multiple VSAM pools. Each pool may have multiple subpools.
A VSAM pool is defined by a POOLID= statement in the DFSVSMxx member for online systems or the DFSVSAMP data set for batch and utility jobs. Subpools in the pool are defined by the VSRBF= statements which follow the POOLID= statement. The POOLID= statement is optional if only one pool is built. When creating multiple pools, you must include a POOLID= statement for each pool.
A subpool has a buffer size of 512, 1024, 2048, or a multiple of 4096 up to 32768. A subpool may have up to 32,767 buffers. Subpools may be used for data components only, index components only, or both data and index components. The third positional parameter on the VSRBF= statement determines which type of components may use the subpool. An “I” indicates that only index components may use the subpool. A “D” indicates that either data or index components may use the subpool. If the parameter is not specified, it defaults to “D”. If there are any subpools defined with the “I” parameter, no subpool in the pool will be used for both index and data components. This rule has caused some confusion among IMS users.
The following examples illustrate this rule:
Since “I” is not specified for the third positional parameter any VSRBF= statements, all of these subpools may be used for both index and data components.
Since the second VSRBF statement builds an index subpool, the first and third subpools may only be used for data components. The second subpool may only be used for index components.
Since the default for the third positional parameter is “D”, this example produces exactly the same subpools as those in example 2. The first and third subpools may only be used for data components. The second subpool may only be used for index components.
Assignment of Data Sets and Components to Buffer Pools
Data sets are assigned to a pool with the DBD= statement. Data and index components of a data set always use the same pool, but they may use different subpools in the pool. The DBD= statement specifies the database or HALDB partition name, the data set in the database, and the pool to which the data set is assigned. For non-HALDB databases, the data set number is used to identify the data set. For HALDB databases, the data set letter (A-J, L, or X) is used to identify the data set.
The first pool defined is the default pool. If a data set is not specifically assigned to a pool with a DBD= statement, it is assigned to the default pool.
The subpool within a pool is selected based on the CI size of the component and the subpool buffer sizes available for the component. The subpool with the smallest buffer size which is at least as large as the CI size is selected.
If the pool to which a data set is assigned does not have subpools with buffers large enough to handle the CI sizes for both the data component and index component of a KSDS, the data set cannot be opened using this pool. If the pool is not the default pool, IMS will then attempt to open the data set using the default pool. Message DFS0730I with reason I,12 is issued in this case.
When the default buffer pool cannot be used because its buffers are too small, IMS issues message DFS0730I with reason O,DC.
The following examples illustrate the assignment of data sets to pools.
The first data set in the database ABC00345 is assigned to pool VSM2. If the data or index component of this data set has a CI size of 4096 or less, the component will use the 4096 subpool in pool VSM2. If the data or index component has a CI size larger than 4096 and no larger than 12288, it will use the 12288 subpool in pool VSM2. If either the data or index component has a CI size larger than 12288, the data set cannot use this pool. Instead, it will use pool VSM1, the default pool. Pool VSM1 has a subpool with 32768 byte index and data buffers. It may be used for any data set.
In this example if the data component CI size is 1024 and the index component CI size is 14336, pool VSM2 cannot be used for the data set. This pool does not have any buffers large enough to hold the index component CIs. The default pool will be used. The data component will use the 4096 byte buffer subpool and the index component will use the 32768 byte buffer subpool.
The first data set in database DEF00678 is assigned to pool VSM3. Pool VSM3 has an index component subpool with 4096 byte buffers and a data component subpool with 12288 byte buffers. If the index component of this data set has a CI size of 4096 or less and the data component has a CI size of 12288 or less, the data set will use pool VSM3. If the CI size of either component is larger than these buffer sizes, IMS will attempt to use the default pool, VSM1, for this data set. Since the buffers in the default pool are smaller than those in VSM3, this will fail and the data set cannot be opened.
In this example if the data component CI size is 1024 and the index component CI size is 14336, pool VSM3 cannot be used for the data set. This pool has only one index component subpool and its buffers are not large enough to hold the index component CIs. IMS will attempt to use the default pool. This will fail because the default pools index component subpool has 2048 byte buffers which are not large enough to hold the index component CIs. The data set open will fail.
IMS installations typically assign a subset of their database data sets to specific pools and let the majority default. They also add database data sets and redefine database data sets without reexamining the definitions of their database buffer pools. Since a redefinition under z/OS 1.3 or a later release may change the index component CI size, it is good practice to have a subpool in the default pool which is large enough to handle any index component CI size. If the default pool contains any index component subpool, one should specifically define an index subpool large enough to handle the largest index component CI size. If the default pool does not contain any index component subpools, one should define a subpool large enough to handle any data or index component CI size. This allows one to open any IMS full function KSDS.
Check for message DFS0730I with reason I,12. It indicates that the data set could not be opened using the buffer pool to which it was assigned. A subpool with larger buffers in the assigned pool should be created for this data set.
Of course, it is also good practice to reevaluate the use of buffer pools on a regular basis. The IMS Buffer Pool Analyzer for z/OS (program number 5697-H77) is an excellent tool for doing this analysis.
Planning and Design
IBM System z Family
OS/390; z/OS; MVS
IMS, VSAM, pool, subpool, KSDS, index, component, DFSVSMxx, DFSVSAMP, VSRBF, POOLID
|Is this your first visit to Techdocs (the Technical Sales Library)?