1.4.3.2 NDB 记录结构

NDB 集群使用的 NDB 存储引擎是一个关系型数据库引擎,它将记录存储在表中,与其他关系型数据库系统一样。表行表示记录,作为关系数据的元组。当创建一个新表时,会为整个表指定其属性模式,因此每个表行都具有相同的结构。同样,这在关系型数据库中很常见,NDB 在这方面也不例外。

主键。 每个记录都有 1 到 32 个属性,这些属性属于表的候选键。

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

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

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

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

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

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

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