Showing results for 
Search instead for 
Did you mean: 

Production memory usage

New Contributor
Given the following 2 scenarios:

1) A real time inmemory tick database generally not queried to frequently
2) A database of mostly static tables to which users can place unconstrained queries

what kind of max memory consumption does kx recommend for production usage? Should scenario 1 max out at ~50% physical memory before maybe requiring another database instance on another machine? Since scenario 2 could potentially result in extra memory being allocated from unconstrained queries would somewhere around 25-30% of physical memory be more reasonable? Or is there some general rule of thumb?

Thank you.

New Contributor
Memory consumption and raw data capacity are different. Kdb 32 bit can report up to 4 GB memory usage. Windows task manager reports up to 2GB ram usage. My guess is half of the signed int/pointer range goes to negative numbers. Another half goes to garbage collection. That leaves 1 GB for raw data.

22 Limits

Each database runs in memory and/or disk map-on-demand -- possibly partitioned. There is no limit on the size of a partitioned database but on 32-bit systems the main memory OLTP portion of a database is limited to about 1GB of raw data, i.e. 1/4 of the address space. The raw data of a main memory 64bit process should be limited to about 1/2 of available RAM.

/ memoryConsumptionTest.q
value each {"t", (string x), ": til 1024*1024"} each til 231;
show .Q.w[]%(1024*1024);

$ q memoryConsumptionTest.q
KDB+ 3.2 2015.02.10 Copyright (C) 1993-2015 Kx Systems
w32/ 4()core 4095MB yan yanicolaptop NONEXPIRE

Welcome to kdb+ 32bit edition
For support please see
Tutorials can be found at
To exit, type \\
To remove this startup msg, edit q.q
used| 3696.113
heap| 3712
peak| 3712
wmax| 0
mmap| 0
mphy| 4096
syms| 0.0007648468
symw| 0.03010845