FarragoSystemParameters
From Eigenpedia
The table below defines the parameters that can be set with the ALTER SYSTEM command, e.g.
alter system set "cachePagesInit" = 1000; alter system set "calcVirtualMachine" = 'CALCVM_AUTO'; alter system set "codeCacheMaxBytes" = max; select * from sys_fem."Config"."FarragoConfig"; select * from sys_fem."Config"."FennelConfig";
(TODO: generate this automatically from the catalog UML, which is the primary definition of these parameters. Some obsolete parameters are left out below.)
Default values are provided for a standard Farrago developer build, but may vary according to personality-based packaging. Note that the fundamental units used (such as seconds and pages) are convenient for Farrago and Fennel but not necessarily for the user, so personalities may want to translate these into human-oriented units via system views and management procedures (e.g. multiplying number of pages by page size and converting to gigabytes).
| Name | Domain | Default Value | Update Policy | Description |
| fennelDisabled | boolean | false | Takes effect on startup | Determines whether Fennel native code components are loaded when the system starts up. |
| codeCacheMaxBytes | 64-bit integer (number of bytes, 0 for disabled, -1 for unlimited) | 2000000 | Immediate | Sets the size of the Farrago code cache, which is used for optimizer plan caching and SQL/MED data wrapper pooling. Setting to MAX causes the cache to grow without bound except for the JVM heap size. Setting to MIN disables the code cache, discarding any currently cached entries. Setting to a finite value causes LRU victimization according to rough estimates on per-object memory usage. |
| checkpointInterval | 32-bit integer (seconds, 0 to disable timer-based checkpoints) | 300 | Takes effect on startup | Sets the interval between automatic timed checkpoints. Regardless of this setting, checkpoints may occur at other times as well (e.g. when the system detects that free log space is low, or when an administrator issues the explicit CHECKPOINT command). |
| serverRmiRegistryPort | 32-bit integer, -1 for personality-based defaults | -1 (implies 5433 for default Farrago personality) | Takes effect on startup | Sets the port number on which to listen for RMI connections (this is the port number specified in client JDBC URL's). |
| serverSingleListenerPort | 32-bit integer, -1 to disable | -1 | Takes effect on startup | Sets a "single listener" port number for RMI. Normally, RMI opens additional ports for each remoted object, which can cause problems in firewalled configurations. Setting a port number here forces RMI to multiplex all non-connection requests through this port. If set, this must be a different value from serverRmiRegistryPort, and both ports must be accessible to clients (although the client never specifies this port number in the URL). |
| calcVirtualMachine | String, one of CALCVM_FENNEL, CALCVM_JAVA, or CALCVM_AUTO. | CALCVM_AUTO | Immediate | Controls which calculator virtual machine is used for evaluating SQL row expressions. CALCVM_FENNEL uses a virtual machine implemented inside of Fennel. CALCVM_JAVA generates and compiles Java code on the fly. CALCVM_AUTO allows the optimizer to choose a blend of the two calculators based on cost or other factors. Changing this parameter causes all entries to be discarded from the code cache. |
| cachePageSize | 32-bit integer (number of bytes; must be a power of 2) | 4096 | Immutable after database creation. | Determines contiguous size of memory buffers allocated by cache. Also determines contiguous size of pages stored on disk; these are the elemental allocation units for all disk-based data structures such as indexes. |
| cachePagesMax | 32-bit integer (number of pages) | 1000 | Takes effect on startup. | Determines upper bound for number of pages cache can allocate. On startup, actual upper bound is set to the larger of this parameter and cachePagesInit. Subsequently, changes to cachePagesInit are limited by upper bound calculated at startup. |
| cachePagesInit | 32-bit integer (number of pages) | 1000 | Immediate. | Sets number of memory buffers to allocate from the OS for Fennel's data cache (also used as a pool for volatile scratch memory allocated by ExecStreams). Increasing it after startup causes new free buffers to be allocated; decreasing it causes buffers to be released (flushing them first if they contain dirty data). Note that this memory is NOT part of the JVM heap, although it shares the same virtual memory address space. |
| databaseInitSize | 32-bit integer (number of pages) | 1000 | Only used at time of database creation; immutable after that. | Determines the number of pages desired when calculating the initial size of Fennel's db.dat file. |
| databaseIncrementSize | 32-bit integer (number of pages, 0 to disable auto-increment) | 1000 | Takes effect on startup. | Determines number of pages by which to automatically extend the db.dat file when all existing pages have been allocated. |
| databaseMaxSize | 32-bit integer (number of pages, 0 for unlimited) | Takes effect on startup. | Determines maximum size to which db.dat file can grow. Further allocations will fail even if space remains in the file system. | |
| tempInitSize | 32-bit integer (number of pages) | 1000 | Takes effect on startup. | Determines the number of pages desired when calculating the initial size of the temp.dat file. This file is recreated every time Fennel is loaded. |
| tempIncrementSize | 32-bit integer (number of pages, 0 to disable auto-increment) | 1000 | Takes effect on startup. | Determines number of pages by which to automatically extend the temp.dat file when all existing pages have been allocated. |
| databaseShadowLogInitSize | 32-bit integer (number of pages) | 2000 | Takes effect on startup. | Determines the number of pages desired when calculating the initial size of the shadowlog.dat file. This file is recreated every time Fennel is loaded, and is used as part of physical recovery. |
| databaseShadowLogIncrementSize | 32-bit integer (number of pages, 0 to disable auto-increment) | 1000 | Takes effect on startup. | Determines number of pages by which to automatically extend the shadowlog.dat file when all existing pages have been allocated. |
| databaseTxnLogInitSize | 32-bit integer (number of pages) | 2000 | Takes effect on startup. | Determines the number of pages desired when calculating the initial size of the txnlog.dat file. This file is recreated every time Fennel is loaded, and is used as part of logical recovery. |
| databaseTxnLogIncrementSize | 32-bit integer (number of pages, 0 to disable auto-increment) | 1000 | Takes effect on startup. | Determines number of pages by which to automatically extend the txnlog.dat file when all existing pages have been allocated. |
| groupCommitInterval | 32-bit integer (milliseconds) | 30 | Takes effect on startup. | Determines the amount of time to wait during commit in the hope that the commit's disk write can be combined with that of other concurrent transactions. |
| resourceDir | String (file-system path) | catalog/fennel under ${FARRAGO_HOME} | Takes effect on startup. | Sets the location of FennelResource.properties (or localized variant). |
| jniHandleTraceFile | String (file-system path) | {empty string} | Takes effect on startup. | See FennelJniHandleTracing. |
| expectedConcurrentStatements | 32-bit integer (number of statements) | 4 | Immediate. | Indicates to the resource governor what is expected to be the maximum number of concurrent statements executing at any given time. It is used by the resource govenor to determine the maximum resource allocation for each statement. |
| cacheReservePercentage | 32-bit integer (percentage between 1 and 99, inclusive) | 5 | Immediate. | The percentage of the Fennel data cache that should be set aside for global resource usage. The remainder will be available to allocate to individual statements. |
| connectionTimeoutMillis | long | 86400000 (24hrs) | Takes effect on startup | Sets the timeout value for JDBC connections. -1 means never time out. Only affects VJDBC flavor of Farrago. |
| deviceSchedulerType | String (name of scheduler implementation) | null (let system decide) | Takes effect on startup | Controls the scheduler used for disk I/O. threadPool means to fake asynchronous I/O via a thread pool, and use buffered file access. On Linux, aioLinux means to use libaio for asynchronous I/O, with O_DIRECT for unbuffered file access. The default is to to use libaio if available, otherwise to fallback to threadPool. On Windows, ioCompletionPort (the default) means to use asynchronous I/O via completion ports and unbuffered file access. In all cases, if an unrecognized or unsupported value is set, the system silently reverts to default behavior to avoid causing startup failures. |

