To help understand the memory usage for a specific VoltDB database, the @Statistics system procedure provides memory usage information. The "MEMORY" keyword returns a separate row of data for each server in the cluster, with columns providing information about the different aspects of memory usage, as described in the following table.
Column | Type of Storage | Description |
---|---|---|
JAVAUSED | Temporary | The amount of memory currently in use for temporary storage. |
JAVAUNUSED | Temporary | The maximum amount of Java heap allocated but not currently in use. |
TUPLECOUNT | Persistent | The number of tuples currently being held in memory. |
TUPLEDATA | Persistent | The amount of memory in use to store inline table data. |
TUPLEALLOCATED | Persistent | The amount of memory allocated for table storage. This includes the amount in use and any free space currently being held by VoltDB. |
INDEXMEMORY | Persistent | The approximate amount of memory in use to store indexes. |
STRINGMEMORY | Persistent | The approximate amount of memory in use for non-inline string and binary storage. |
POOLEDMEMORY | Persistent | The total amount allocated to pooled memory, including the memory assigned for storing strings, indexes, free lists, and metadata associated with tuple storage. |
RSS | All | The resident set size for the VoltDB server process. |
You can use periodic calls to the @Statistics system procedure with the "MEMORY" keyword to track your database cluster's memory usage in detail. But if you are only looking for an overall picture, VoltDB provides simple graphs at runtime.
Connect to a VoltDB server's HTTP port (by default, http://<server-name>:8080) to see graphs of basic memory usage for that server, including total resident set size (RSS), used Java heap and unused Java heap. Memory statistics are collected and displayed over three different time frames: 2 minutes, 30 minutes, and 24 hours. Click on the web browser's refresh button to update the charts.