•Disk Data record page cache ( DiskPageBufferMemory , DiskPageBufferEntries ) 

•Transaction memory ( TransactionMemory ) 

•Query memory 

•Disk access records 

•File buffers 

Each of these resources is set up with a reserved memory area and a maximum memory area. The reserved memory area can be used only by the resource for which it is reserved and cannot be shared with other resources; a given resource can never allocate more than the maximum memory allowed for the resource. A resource that has no maximum memory can expand to use all the shared memory in the memory manager. 

The size of the global shared memory for these resources is controlled by the SharedGlobalMemory configuration parameter (default: 128 MB). 

Data memory is always reserved and never acquires any memory from shared memory. It is controlled using the DataMemory  configuration parameter, whose maximum is 16384 GB. DataMemory  is where records are stored, including hash indexes (approximately 15 bytes per row), ordered indexes (10-12 bytes per row per index), and row headers (16-32 bytes per row). 

Redo log buffers also use reserved memory only; this is controlled by the RedoBuffer  configuration parameter, which sets the size of the redo log buffer per LDM thread. This means that the actual amount of memory used is the value of this parameter multiplied by the number of LDM threads in the data node. 

Job buffers use reserved memory only; the size of this memory is calculated by NDB , based on the numbers of threads of various types. 

Send buffers have a reserved part but can also allocate an additional 25% of shared global memory. The send buffer reserved size is calculated in two steps: 

1. Use the value of the TotalSendBufferMemory  configuration parameter (no default value) or the sum of the individual send buffers used by all individual connections to the data node. A data node is connected to all other data nodes, to all API nodes, and to all management nodes. This means that, in a cluster with 2 data nodes, 2 management nodes, and 10 API nodes each data node has 13 node connections. Since the default value for SendBufferMemory  for a data node connection is 2 MByte, this works out to 26 MB total. 

2. To obtain the total reserved size for the send buffer, the value of the ExtraSendBufferMemory configuration parameter, if any (default value 0). is added to the value obtained in the previous step. 

In other words, if TotalSendBufferMemory  has been set, the send buffer size is TotalSendBufferMemory + ExtraSendBufferMemory ; otherwise, the size of the send buffer is equal to ([ number of node connections ] * SendBufferMemory) + ExtraSendBufferMemory . 

The page cache for disk data records uses a reserved resource only; the size of this resource is controlled by the DiskPageBufferMemory  configuration parameter (default 64 MB). Memory for 32 KB disk page entries is also allocated; the number of these is determined by the DiskPageBufferEntries configuration parameter (default 10). 

Transaction memory has a reserved part that either is calculated by NDB , or is set explicitly using the TransactionMemory  configuration parameter introduced in NDB 8.0.19 (in previous releases, this value was always calculated by NDB ); transaction memory can also use an unlimited amount of shared global memory. Transaction memory is used for all operational resources handling transactions, scans, locks, 

