返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

并行技术
..........................................
10

GBase 8s ODBC Driver提供可用于检索有关行和集合的函数。
下表提供了 GBase 8s ODBC Driver用于检索行和集合信息的函数概述。
ifx_rc_describe() 函
数返回行或集合中元素的数据类型。
函数
信息
参考
ifx_rc_count()
列数
ifx_rc_count() 函数
ifx_rc_describe() 数据类型信息
ifx_rc_describe() 函数
ifx_rc_isnull()
指示是否为空的值 ifx_rc_isnull() 函数
ifx_rc_typespec() 类型描述
ifx_rc_typespec() 函数
















GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 158 -


7 客户端函数
这些主题描述了 GBase 8s ODBC Driver客户端函数。使用这些函数访问和操纵智能大对象
以及行和集合。
仅当您的数据库服务器是 GBase 8s 时,这些函数才适用。

MOT 索引基于最先进的Masstree 的免锁索引,用于多核系统的快速和可扩展的键值
(KV)存储,通过B+树的Trie 实现。在多核服务器和高并发工作负载上,性能优异。它使
用各种先进的技术,如乐观锁方法、缓存感知和内存预取。
在比较了各种最先进的解决方案之后,我们选择了Masstree 作为索引,因为它显示了
点查询、迭代和修改的最佳总体性能。Masstree 是Trie 和B+树的组合,用以谨慎利用缓存、
预取、
乐观导航和细粒度锁定。
它针对高争用进行了优化,
并对其前代产品增加了许多优化,
如OLFIT。然而,Masstree 索引的缺点是它的内存消耗更高。虽然行数据占用相同的内存大
小,但每个索引(主索引或辅助索引)的每行内存平均高了16 字节——基于磁盘的表使用
基于锁的B 树,大小为29 字节,而MOT 的Masstree 大小为45 字节。
我们的实证研究表明,成熟的免锁Masstree 实现与我们对Silo 的强大改进相结合,恰
能为我们解决这一方面的问题。
另一个挑战是对具有多个索引的表使用乐观插入。
Masstree 索引是用于数据和索引管理的MOT 内存布局的核心。我们的团队增强并显著
改进了Masstree,同时提交了一些关键贡献给Masstree 开源。这些改进包括:

每个索引都有专用内存池:高效分配和快速索引下移

Masstree 全球GC:快速按需内存回收

具有插入键访问的大众树迭代器实现

ARM 架构支持
MOT 的主要创新是增强了原有的Masstree 数据结构和算法,它不支持非唯一索引(作
为二级索引)。设计细节请参见非唯一索引。
MOT 支持主索引、
辅助索引和无键索引
(受不支持的索引DDL 和索引中提到的限制)

非唯一索引
一个非唯一索引可以包含多个具有相同键的行。
非唯一索引仅用于通过维护频繁使用的

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
492
数据值的排序来提高查询性能。
例如,
数据库可能使用非唯一索引对来自同一家庭的所有人
员进行分组。但是,Masstree 数据结构实现不允许将多个对象映射到同一个键。我们用于创
建非唯一索引的解决方案(如下图所示)
是为映射行的键添加一个打破对称的后缀。这个添
加的后缀是指向行本身的指针,该行具有8 个字节的常量大小,
并且值对该行是唯一的。当
插入到非唯一索引时,哨兵的插入总是成功的,这使执行事务分配的行能够被使用。这种方
法还使MOT 能够为非唯一索引提供一个快速、可靠、基于顺序的迭代器。
图13- 5 非唯一索引
上图描述了一个MOT 的T 表的结构,它有三个行和两个索引。矩形表示数据行,索引
指向指向行的哨兵(椭圆形)。哨兵用键插入唯一索引,用键+后缀插入非唯一索引。哨兵
可以方便维护操作,无需接触索引数据结构就可替换行。此外,
在哨兵中嵌入了各种标志和
参考计数,以便于乐观插入。
查找非唯一辅助索引时,
会使用所需的键
(如姓氏)

全串联键只用于插入和删除操作。
插入和删除操作总是将行作为参数获取,
从而可以创建整个键,
并在执行删除或插入索引的
特定行时使用它。