返回首页

gbase数据、南大通用产品文档:GBase8aHASH JOIN 优化

更新日期:2024年09月11日

需要进行大数据量处理的分析型数据库中,join 过程在查询耗时中占很大比重,
其中HASH JOIN 又是最常见的JOIN 类型。因此,提升HASH JOIN 算子的性能
对整体查询效能的提升有重要意义。
One-Pass Hash Join 算法是HASH JOIN 的一种优化算法。通过对JOIN 双方先进
行哈希划分,
同组分片进行HASH JOIN,
最后合并各组JOIN 结果的方法,
使JOIN
耗时随数据量的增长呈线性增长趋势。这个改进提高了HASH JOIN 算法对数据
增长的适应性,同时也大幅提升了大数据量下的查询效能。

开启
One-Pass
Hash
Join
需要配置
GNode
配置文件选项
_gbase_one_pass_hash_join;

当_gbase_one_pass_hash_join = 0 或未设置时,
使用GBase 8a MPP CLuster 原
始Hash Join 算法;

当_gbase_one_pass_hash_join = 1 时,根据traverse 表的数据量和hash buffer
大小自动评估是否使用One-Pass Hash Join 算法。如果hash buffer 不能容纳
traverse 表全表所建的哈希表,则使用One-Pass Hash Join 算法,否则使用原
始Hash Join 算法;

当_gbase_one_pass_hash_join = 2 时,
不进行判断直接使用One-Pass Hash Join
算法。
注意
当前的One-Pass Hash Join 实现只在并行时生效,即需要在配置文件中设置
gbase_parallel_execution = 1。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1335

功能描述
释放与PGresult 相关联的存储空间,任何不再需要的查询结果都应该用PQclear 释放。
原型
void PQclear(PGresult *res);
参数
表8-42 PQclear 参数
关键字
参数说明
res
包含查询结果的对象指针。
注意事项
PGresult 不会自动释放,当提交新的查询时它并不消失,甚至断开连接后也不会。要删
除它,必须调用PQclear,否则则会有内存泄漏。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
284
示例
参见6.4.3 示例。

IEEE 标准,实际的范围根据硬件或操作系统的不同可能稍微小些。
GBase 8a MPP Cluster 允许在关键字DOUBLE 后面的括号内选择用位指定精度,
即DOUBLE (X)。0 到23 的精度对应FLOAT 列的4 字节单精度,24 到53 的精
度对应DOUBLE 列的8 字节双精度。
当0<=X<=23 时,
FLOAT(X)与DOUBLE(X)
等价。
同时GBase 8a MPP Cluster 允许使用非标准语法DOUBLE(M,D)(M 是整数位数
和小数位数的总位数,
D 是小数的个数)
,GBase 8a MPP Cluster 保存值时进行四
舍五入。
示例
示例1:定义的列数据类型为DOUBLE。
CREATE TABLE products(productnum DOUBLE);
INSERT INTO products(productnum) VALUES(-19000.44365);
gbase> DESC products;
+------------+--------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+------------+--------+------+-----+---------+-------+
| productnum | double | YES
|
| NULL
|
|
+------------+--------+------+-----+---------+-------+
1 row in set
gbase> SELECT productnum FROM products;
+--------------+
| productnum
|
+--------------+
| -19000.44365 |
+--------------+
1 row in set