MySQL NDB Cluster 内部手册  / 第 5 章 NDB Cluster 启动阶段  /  5.2 配置读取阶段(STTOR阶段-1)

5.2 配置读取阶段(STTOR阶段-1)

READ_CONFIG_REQ信号为所有内核块提供了读取配置数据的机会,配置数据存储在所有块都可以访问的全局对象中。数据节点中的所有内存分配都发生在这个阶段。

笔记

内核块和 NDB文件系统之间的连接也在阶段 0 期间建立。这对于使块能够轻松地通信将表结构的哪些部分写入磁盘是必要的。

NDB以两种不同的方式执行内存分配。第一个是使用 allocRecord()方法(在 中定义 storage/ndb/src/kernel/vm/SimulatedBlock.hpp)。ptrCheckGuard这是使用宏(在 中定义 )访问记录的传统方法storage/ndb/src/kernel/vm/pc.hppsetSize()另一种方法是使用在中找到的模板帮助下定义 的方法分配内存 storage/ndb/src/kernel/vm/CArray.hpp

这些方法有时也会初始化内存,确保内存分配和初始化都是在看门狗保护下完成的。

许多块还执行特定于块的初始化,这通常需要构建链表或双向链表(在某些情况下还需要哈希表)。

分配中使用的许多大小是在 Configuration::calcSizeAlt()方法中计算的,在 中找到 storage/ndb/src/kernel/vm/Configuration.cpp

已经为更智能的内存资源池做了一些准备。 DataMemory和磁盘记录已经属于这个全局内存池。