The READ_CONFIG_REQ signal provides all
        kernel blocks an opportunity to read the configuration data,
        which is stored in a global object accessible to all blocks. All
        memory allocation in the data nodes takes place during this
        phase.
      
          Connections between the kernel blocks and the
          NDB file system are also set up during
          Phase 0. This is necessary to enable the blocks to communicate
          easily which parts of a table structure are to be written to
          disk.
        
        NDB performs memory allocations in two
        different ways. The first of these is by using the
        allocRecord() method (defined in
        storage/ndb/src/kernel/vm/SimulatedBlock.hpp).
        This is the traditional method whereby records are accessed
        using the ptrCheckGuard macros (defined in
        storage/ndb/src/kernel/vm/pc.hpp). The
        other method is to allocate memory using the
        setSize() method defined with the help of the
        template found in
        storage/ndb/src/kernel/vm/CArray.hpp.
      
These methods sometimes also initialize the memory, ensuring that both memory allocation and initialization are done with watchdog protection.
Many blocks also perform block-specific initialization, which often entails building linked lists or doubly-linked lists (and in some cases hash tables).
        Many of the sizes used in allocation are calculated in the
        Configuration::calcSizeAlt() method, found in
        storage/ndb/src/kernel/vm/Configuration.cpp.
      
        Some preparations for more intelligent pooling of memory
        resources have been made. DataMemory and disk
        records already belong to this global memory pool.
      
