MySQL NDB 集群 8.1 手册
MySQL NDB 集群 8.0 手册
NDB 集群 API 开发者指南
READ_CONFIG_REQ
信号为所有内核块提供了一个机会来读取配置数据,这些数据存储在所有块都可以访问的全局对象中。数据节点中的所有内存分配都在此阶段进行。
注意
内核块与 NDB
文件系统之间的连接也在阶段 0 建立。这是为了让块能够轻松地通信,以确定表结构的哪些部分应该写入磁盘。
NDB
通过两种不同的方式执行内存分配。第一种方法是使用 allocRecord()
方法(在 storage/ndb/src/kernel/vm/SimulatedBlock.hpp
中定义)。这是传统方法,通过该方法,记录使用 ptrCheckGuard
宏(在 storage/ndb/src/kernel/vm/pc.hpp
中定义)进行访问。另一种方法是使用 setSize()
方法分配内存,该方法在 storage/ndb/src/kernel/vm/CArray.hpp
中的模板帮助下定义。
这些方法有时还会初始化内存,确保内存分配和初始化都具有看门狗保护。
许多块还会执行特定于块的初始化,这通常需要构建链表或双向链表(在某些情况下还需要构建哈希表)。
分配中使用的许多大小都在 storage/ndb/src/kernel/vm/Configuration.cpp
中的 Configuration::calcSizeAlt()
方法中计算。
已经为更智能地池化内存资源做了一些准备。 DataMemory
和磁盘记录已经属于这个全局内存池。