1.4.3.2 NDB 记录结构

NDB Cluster 使用的NDB存储引擎是一个关系数据库引擎,与其他关系数据库系统一样,将记录存储在表中。表行将记录表示为关系数据的元组。当创建一个新表时,它的属性模式是为整个表指定的,因此每个表行具有相同的结构。同样,这是典型的关系数据库, NDB在这方面没有什么不同。

主键。  每条记录有 1 到 32 个属于表主键的属性。

交易。  在发出全局检查点 (GCP) 之后,事务首先提交到主内存,然后提交到磁盘。由于所有数据(在大多数 NDB Cluster 配置中)同步复制并存储在多个数据节点上,系统可以处理处理器故障而不会丢失数据。但是,在系统范围内发生故障的情况下,自最近的 GCP 以来发生的所有事务(已提交或未提交)都将丢失。

并发控制。  NDB使用 基于锁定的悲观并发控制。如果在指定时间内无法获得所请求的锁(隐式且取决于数据库操作),则会导致超时错误。

并行应用程序和基于线程的应用程序所请求的并发事务在尝试同时访问相同信息时有时会死锁。因此,应用程序需要以一种方式编写,以便妥善处理由于此类死锁而发生的超时错误。这通常意味着遇到超时的事务应该回滚并重新启动。

提示和性能。  将事务协调器放置在靠近事务中使用的实际数据的位置,在许多情况下可以显着提高性能。对于使用 TCP/IP 的系统尤其如此。例如,使用单个 500 MHz 处理器的 Solaris 系统有一个用于 TCP/IP 通信的成本模型,可以用以下公式表示

[30 microseconds] + ([100 nanoseconds] * [number of bytes])

这意味着如果我们能够确保我们使用 流行链接,我们就会增加缓冲,从而大大降低通信成本。

一个简单的例子是使用许多简单更新的应用程序,其中事务需要更新一条记录。该记录有一个 32 位的主键,也用作分区键。则keyData作为主键整数的地址 keyLen4