5.3.6 Operands related to lock

13) pd_lck_pool_size = server-lock-pool-size
[Figure]<unsigned integer> (KB)
  • 32-bit mode: ((1-2000000))
  • 64-bit mode: ((1-2000000000))
Specifies in kilobytes the size of the shared memory to be used by the single server for locking.
Specification guidelines
  • In the 32-bit mode, the amount of lock pool space required for six lock requests is 1 KB.
  • In the 64-bit mode, the amount of lock pool space required for four lock requests is 1 KB.
  • The following formulas can be used to determine the value to be specified for this operand:
    HiRDB typeFormula
    HiRDB/Single Server (32-bit mode)[Figure]a [Figure]6[Figure] (KB)
    HiRDB/Single Server (64-bit mode)[Figure]a [Figure]4[Figure] (KB)
a:
Total number of transaction lock requests to be executed concurrently by the single server. The number of lock requests depends on the SQL. For details about how to determine the total number of lock requests, see E. Determining the Number of Locked Resources.
Tuning the specified value
See the usage rate for the locked resources management table (% OF USE LOCK TABLE) displayed in the statistical information on system operation by the statistics analysis utility. If the maximum usage rate equals or exceeds 80%, it is recommended that the operand's value be increased in preparation for future database expansion. If the maximum usage rate does not exceed 10%, it is recommended that the operand's value be decreased to conserve shared memory space.
Note
If the value specified for this operand is too small, an SQL may return an error.
14) pd_lck_until_disconnect_cnt = total-number-of-tables-and-RDAREAs-to-be-locked-until-disconnect-specification
[Figure]<unsigned integer>((0-140000))
Specifies the number of resources to be locked for the tables and RDAREAs that are to be held across transactions. Based on the value specified for this operand, blocks for which lock with UNTIL DISCONNECT is specified for the tables and RDAREAs are allocated in the shared memory.
Specification guidelines
Normally, this operand need not be specified. Specification of a value other than the default value may be necessary in the following cases:
  • When the number of utilities to be executed concurrently increases
  • When a holdable cursor is used
  • When the local buffer specified in the pdlbuffer operand is used
For the method of estimating the specification value for this operand, see D.4 Formula for determining total number of tables and RDAREAs per server locked with UNTIL DISCONNECT specified (pd_lck_until_disconnect_cnt).
Tuning the specified value
If the value specified for this operand is small, a transaction may roll back or a utility may terminate abnormally with return code 8. In such cases, the message KFPA11914-E or KFPH28001-E is output. If this occurs, the value of this operand should be increased.
When the value of this operand is increased, the amount of required memory space increases proportionately. The required memory size can be expressed as follows: value-of-this-operand[Figure] 48 (64 in the 64-bit mode) bytes.
15) pd_max_open_holdable_cursors = maximum-number-of-holdable-cursors-that-can-be-concurrently-open-when-LOCK-statement-with-UNTIL-DISCONNECT-specification-is-not-executed
[Figure]<unsigned integer>((16-1024))
When you use holdable cursors for a table for which a LOCK statement with UNTIL DISCONNECT specification is not executed, this operand specifies the maximum number of holdable cursors that can be concurrently open for each transaction.
Note
Specifying a value other than the default value for this operand increases the amount of shared memory used.
Relationship to other operands
The values specified for this operand and the following operands are used for computing the shared memory size for lock servers. For a 32-bit mode HiRDB system, if the values specified for these operands are too large, the shared memory size of the lock servers exceeds 2 GB, and as a result, HiRDB may not start. Therefore, adjust the values specified for these operands so that the shared memory size of the lock servers does not exceed 2 GB.
  • pd_max_access_tables
  • pd_max_users
  • pd_lck_hash_entry
  • pd_lck_pool_size
For details about shared memory, see the HiRDB Version 8 Installation and Design Guide.
16) pd_lck_hash_entry = lock-pool-hash-entry-count
[Figure]<unsigned integer>((0-2147483647))
Specifies the number of hash table entries to be used in the lock pool. According to the value specified here, HiRDB allocates a lock pool in the shared memory for the unit controller.
Specification guidelines
  1. Normally, omit this operand.
  2. Consider specifying a value for this operand in the following cases:
  • If you do not wish to change the shared memory size if possible when upgrading to Version 06-02 or a newer version, specify 11261. In this case, the same number of hash entries is allocated as in the older version, and the hash table size inside the lock pool remains the same as before.
  • Specifying for this operand a value greater than the recommended value may improve performance. However, specifying a value greater than variable a described in Determining the recommended value does not improve performance over a case in which a is specified.
Operand rules
  • If 0 is specified for this operand or if this operand and the pd_lck_hash_entry operand of the server common definition are omitted, HiRDB computes a recommended value for each server. For details about recommended values, see Determining the recommended value for the pd_lck_hash_entry operand in the server common definition.
  • If a non-zero value or a non-prime number is specified for this operand, HiRDB assumes that the largest prime number not exceeding the specified value has been specified.
Note
If the value specified for this operand is too small, hash entry shortage may occur, resulting in performance degradation. If this operand is omitted, neither hash entry shortage nor performance degradation due to hash entry shortage occurs.
Determining the recommended value
For details on the recommended values, see Determining the recommended value for the pd_lck_hash_entry operand of the server common definition.
17) pd_dbsync_lck_release_count = global-buffer-lock-release-interval-during-synchronization-point-processing
[Figure]<unsigned integer>((0, 100-1073741824))
Specifies an interval for unlocking global buffers, when global buffer locking occurs during synchronization point processing.
During synchronization point processing, search processing occurs on the buffers (update buffers) and must be applied to the disk. Normally, global buffers are unlocked at a specific interval during search processing on the update buffers.
For example, if 100 is specified in this operand, a global buffer is unlocked once when search processing on 100 sectors (global buffer sectors) is completed. After that, the global buffer is locked again and search processing is resumed. In this example, unlocking occurs once every 100 sectors.
Advantage
By specifying this operand, you can adjust the global buffer lock time during synchronization point processing. When a small value is specified in this operand, the global buffer lock time becomes short and transaction performance may improve during synchronization point processing.
To obtain the global buffer pool lock time, execute the statistics analysis utility and in the global buffer pool statistical information check the item called Buffer pool lock time during synchronization point processing (SYNCL).
Specification guidelines
Normally, there is no need to specify this operand. Consider specifying this operand when both the following conditions apply:
  • Transaction performance drops during synchronization point processing.
  • A large number of buffer sectors is specified in the -n option of the pdbuffer operand.
Operand rules
  • If the specified value is in the range 1 to 99, 100 is set automatically.
  • If 0 is specified, global buffers are locked until update buffer search processing is completed.
Notes
If a small value is specified in this operand, the update buffer search time becomes longer due to interruptions by other transactions. The global buffers updated during that time are also output during synchronization point processing. Therefore, the number of update buffers to be output during synchronization point processing increases. To obtain the number of update buffers to be output during synchronization point processing, execute the statistics analysis utility and in the global buffer pool statistical information check the item called Number of synchronization point output pages (SYNCW).