由于GBase 8a MPP Cluster 是列存储的架构,因此当列数较多,访问的数据记录
又非常离散时,会造成大量的离散I/O,引起I/O 性能及有效性低下,严重影响执
行性能。
冗余行存储总体的实现逻辑为:将需要冗余的各列数据拼成行,以单独一列的形
式存储,相当于在原始表上添加了一列,该列为VARCHAR 类型,存储着对应的
行数据。行存列的管理与普通列大体相同,但DC 被划分为多个page,可以根据
要访问的page 进行加载,不需要读取整个DC。
行列混存功能,
通过冗余行存储来有效提高I/O 性能,
可将典型SELECT * FROM
场景的性能提升一个数量级。
1.
优化特性:
支持行存列压缩存储,减少冗余。
行存列以更小粒度的Data Page 读取数据,减少无效I/O,提升查询性能。
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1325
使用gbase_hybrid_store 配置参数控制是否使用行存数据,
用于对比测试、
排
查错误等,该参数取值为:
•
0:不使用;
•
1:server 自动判断是否使用;
•
2:强制使用,有则一定使用。
自动判断逻辑,如果满足以下条件则使用:
•
字段被定义为行存列;
•
RowsPerDC 的值小于等于参数_gbase_hybrid_store_limit 的定义值;
RowsPerDC:就是当前查询所返回的记录数/命中的DC 个数。
存储冗余方式灵活,用户可自定义行存列中的字段,主要是通过select 语句
中投影列出现的频率来选择行存列应该包括哪些字段。
2.
优化限制:
行存列数据暂时不用于scan、join、group 等运算,目前仅能用于单表查询带
order by 的select(即物化)部分以及order by 的相关列,如:
SELECT * FROM t [ WHERE … ] ORDER BY ...;
3.
优化参数:
•
查询时是否使用行存列参数:gbase_hybrid_store=0(不使用)/1(自动判断
/2(强制使用),该参数默认值为1。
•
行存列存储时的页大小:
gbase_hybrid_store_page_size=<1k –1G> ,
默认
值32K。
•
返回结果中平均DC 返回记录数的上限:
_gbase_hybrid_store_limit=<1-65536>,默认值100。
4.
其它特性及限制:
•
支持建表时指定行存列;
•
支持在已有表上新增行存列;
•
支持删除行存列;
•
支持一个表上建立多个行存列,但行存列不能重名;
•
行存列的数据更新由系统自动维护,对用户透明。当用户执行INSERT、
快速UPDATE、DELETE、LOAD 等时,系统会自动更新冗余的数据;
•
不支持修改行存列的定义,只能先手工删除再重建行存列;
•
行存列的原始列定义不允许删除或修改数据属性(但允许更改列名称和
列顺序);
•
原始列的数据不允许做批量update 操作(整列替换模式);
•
同一grouped 中所有列的总长度不允许超过32KB;
•
行存列支持分区表,允许原始列上有索引。
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1326