Forum: VoltDB Architecture

Post: How does VoltDB manage the memory when it execute SQL which need a lot of memory?

How does VoltDB manage the memory when it execute SQL which need a lot of memory?
guotong1988
Sep 21, 2015
When the C++ code compute a complex SQL , could it happens that the memory usage is larger than the machine's limit?How does VoltDB deal with it?
bballard
Sep 21, 2015
When the SQL execution engine (C++ code) is executing a query it may copy records to "temp tables" in memory in order to perform certain operations on that data. There is a limit of 100MB per partition for these temp tables. If the limit is exceeded, the query results in a SQL error. If it is part of a transaction that involved writes, the transaction will roll back. This limit is configurable, but should be set only with careful consideration of available memory.
guotong1988
Sep 22, 2015
Thank you ! Do you think SSD is a good way to solve the limited memory problem?
bballard
Sep 22, 2015
VoltDB is architected to use 100% main memory for data, as it's intended for fast transaction processing.

Many fast data problems will fit in main memory, and in many cases that seem to require a larger capacity, it is often where the previous implementation used a single disk-based database, but with VoltDB the data retention period can be reduced to fit in memory, with older records exported to a disk-based analytic data store such as Hadoop or a column store database.

VoltDB can use SSD for durability, and we recommend SSD or a disk controller with battery-backed write cache for the most demanding synchronous command logging configurations.