Memory Settings
The main resource used by X100 is system memory. The system uses two memory pools:
Disk page buffer pool
Configured by setting the [cbm]
bufferpool_size parameter (see
bufferpool_size). The value must be an exact number with a suffix K, M, or G representing kilobytes, megabytes, and gigabytes, respectively.
Default: 0 (use 25% of physical memory)
Query execution memory
Configured by setting the [memory]
max_memory_size (see
max_memory_size) parameter. The number provided is the available physical memory X100 can claim.
Default: 0 (use 50% of available memory)
Note: These two memory settings are cumulative. For example: On an 8 GB machine, the default configuration will consume up to 6 GB of memory (2 GB buffer pool + 4 GB query memory).
For example: On a 16 GB machine, if you want to configure the system to use 4 GB on the buffer pool and the remaining 10 GB on query memory (assuming 2 GB is reserved for other programs), the configuration file should have these entries:
[cbm]
bufferpool_size = 4G
[memory]
max_memory_size = 10G
Memory Configuration Guidelines
How should you determine how much memory should be set aside for the buffer pool versus query execution?
If you use rather simple queries that do not require a lot of memory (for example, large scans that produce relatively few aggregates), you do not need a lot of query execution memory.
If you have complex queries (for example, joins between large tables, or aggregations that produce many results), you need more query memory.
If your disk system is fast or if your set of frequently accessed data is rather small, large disk buffer is not that crucial. Similarly, if you have a large disk-resident dataset and a slow disk, increasing the buffer pool size can help.
A rule of thumb is to start with query memory to about 50% and buffer pool to about 25% of your memory (the default), and adjust as needed.