问题现象
udf 函数有反馈中文结果的,在 datastudio 客户端显示为乱码,但在 gccli 中显示
正常,当前只能在 datastudio 客户端写成 convert(
using gbk)这种方式才能显
示正常,但自带系统函数如 to_char 不做任何处理均可正常显示。
解决方法:
目前现状下 udf 返回 binary 类型,在客户应用开发中需要手工的进行字符集处理:
GBase 8a MPP Cluster FAQ FAQ
文档版本(2021-04-02) 南大通用数据技术股份有限公司
73
在 sql 中增加转码,或在程序中进行转码。
控制
join
是否启用
hash
重分布模式
问题现象
gcluster_hash_redistribute_join_optimize
这个参数用于控制是否启用
Hash
重分布的
JOIN
模式。
解决方法
参数
=0
,禁用
hash
重分布,拉复制表。
参数
=1
,一直使用。如果开启此选项,在两个分布表进行等值
JOIN
运算
时,将把其中一个表的数据根据连接条件列的值进行哈希重分布。然后利用
各个运算节点上重分布后的临时表和另一个进行
JOIN
运算。这样,各节点
的运算结果直接汇总即可得到最终结果。
这种策略可以免于将其中一个分布表在所有运算节点上拉成复制表,而是每
个运算节点只需接收这个表的一部分数据。
参数
=2
,由规则决定。应用规则为:两表的尺寸相差不超过
20%
时,使用哈
希重分布
JOIN
;否则不使用。
该参数的默认值是
2
。
当参数
=2
,自动评估时,有时会将大表拉成复制表进行
join
,性能较慢。比
如
3
亿的表
left join 7000
万的表,自动评估会将右表拉复制表,不如
hash
重
分布性能快。此类情况,可以配合如下参数使用:
gcluster_hash_redist_threshold_row
当该值不为
0
时,若小表拉表的数据行数大于该值,进行
HASH
重分布
JOIN
。
该参数的默认值是
0
。