1. A computer implemented method, comprising: receiving a request to load data from a storage device into an in-memory database, wherein the in-memory database is distributed across a plurality of nodes, each node comprising a local memory; determining, by at least one processor, an optimal one of the plurality of nodes onto which to load the data from the storage device based on a system state, wherein the system state indicates a concurrency of threads executing on the plurality of nodes; determining whether the optimal node has sufficient free local memory in a free list to store the data, wherein if the optimal node does not have sufficient free list memory: requesting an allocation of heap memory to be allocated to the optimal node, storing the data in the requested heap memory, and binding the requested heap memory storing the data to the optimal node; and providing, responsive to the request, an address of the allocated heap memory by which the data is accessed; wherein at least one of the receiving, determining the optimal node, determining whether the optimal node has sufficient free memory, and providing are performed by one or more computers.