Product Documentation

FairCom ISAM for C

Previous Topic

Next Topic

Controlling Server Memory

This section is a summary of the FairCom Server memory limit behavior and associated transaction controls. The Server has two means of controlling memory use:

  • User memory limits
  • Total memory limit

The user memory limit is specified through system-wide defaults using the USR_MEMORY and GUEST_MEMORY configuration keywords, which take as their arguments the memory threshold defaults at the user level. The GUEST_MEMORY limit applies to applications that connect to the FairCom Server without a user ID. The USR_MEMORY limit applies to applications that do provide a user ID as part of their Server logon. These thresholds default to zero, which implies no limit on user memory. The system-wide user memory defaults can be overridden by specifying a user memory limit when adding a user ID to the Server administrative database with the ctadmn program.

The user memory limit can be either a guideline or an absolute limit. The memory limit defaults to a guideline. In the guideline mode, when a user exceeds the user memory limit (if set), an attempt is made to flush preimage memory to disk. However, the preimage control block still resides in memory. In any event, the user is able to continue getting more memory even if the user limit is exceeded. The effect of exceeding the guideline limit is two-fold:

  1. Preimage memory is swapped to disk, and
  2. The OPS_MEMORY_SWP bit in the user’s FairCom DB status word is turned on, (see SetOperationState (SetOperationState, SetOperationState) in the FairCom DB Programmers Reference Guide). This bit stays on until a new transaction is started. In absolute mode, memory is denied the user if the limit is exceeded, which will lead to aborted transactions and/or errors during update operations.

TOT_MEMORY is a deprecated keyword. FairCom does not recommend setting a total memory limit.

To avoid large amounts of memory use by an application performing large transactions, a special automatic commit mode can be enabled through Begin().