# xSQL Runtime Configuration Options

> The xSQL configuration file can be used to define a number of runtime configuration parameters that determine what eXtremeDB libraries are loaded at startup.

> ### For an overview see page Configuration File Parameters

> Parameters are specified by `name:value` pairs enclosed within braces. For example:

>         runtime_configuration : {
>             debug_library : false,
>             disk_support : false,
>             shared_memory : false,
>             transaction_manager : mursiw
>         },

>         ...

> The following tables define the possible options for the `runtime_configuration` section:

> Option name : example value | Comment
> --- | ---
> debug_library : false, | Use debug libraries, boolean. Default value `false`
> disk_support : true, | Disk database support, boolean. Default value `false`
> shared_memory : false, | Use shared memory, boolean. default value `false`
> rle_sequences : true, | Enable/Disable RLE-based compression for sequences. (Note that this does not work for Windows and AIX yet (April 2017) as these OSes require building another set of wrapper libraries .)
> transaction_manager : mvcc, | Transaction manager, `mursiw` or `mvcc`. Default value `mursiw`
> sync_library : mcoslnxp, | Synchronization: (for Linux, Solaris or HPUX only) : For Linux: `mcoslnx` (atomics + SysV semaphores), `mcoslnxs5` (pure SysV semaphores), `mcoslnxp` (PThread semaphores), Only `mcoslnxp` can be used with conventional memory, but all are suitable for shared memory. Default value for shared-memory is `mcoslnx` For Solaris: only `mcossun` For HPUX: only `mcoshpuxp`
> fs_library : mcofuni, | File system: All Unix’s support `mcofu98` (default), `mcofuni` and `mcofu98zip`. Additionally Linux supports `mcofu98ziplog`
> mem_library : mcompsx | Memory manager: For conventional memory all Unix’s support only `mcomconv`. For shared memory, all Unix’s support `mcomipc` (default) and Linux also supports `mcompsx`

## A note about Synchronization, File System and Memory Management Libraries

It is possible to configure specific libraries to manage low level system functions such as synchronization (system semaphores), file system (persistent media layers) and memory (shared memory access). However, these options make sense only for systems where it's possible to load eXtremeDB libraries individually. Currently this is supported for Linux, Solaris and HPUX operating systems. Windows and AIX use monolithic libraries and thus don't support changing `sync` `mem` or `fs` libraries at runtime.

For supported platforms, the possible options are indicated in the comments for `sync_library`, `mem_library` and `fs_library` in the `runtime_configuration` section. (Note that the value for each parameter is the name of the library to be used, without the `lib` prefix and `_debug` or `.so` suffixes.)