返回首页

gbase数据、南大通用产品文档:GBase8agroup by 常量执行耗时长

更新日期:2024年09月11日

问题现象
使用tableau 工具拉取字段,在没有group by 字段时,捕捉tableau 下发给8a MPP
的sql 发现,在不指定group by 的情况下会生成group by 1.10000000000000001,
sql 会根据生成的临时字段增加一步执行操作,浪费大量时间。
解决方法:
group by 只存在const 类型的元素,hash redistribute 会对const 进行Hash
数据重分布,导致全部将数据分布到相同的节点上,严重影响性能。
需要设置常量group by 的优化参数_t_gcluster_optimizer_group_const 来控
制此功能状态,可以通过explain 执行计划查看执行情况。
0:表示优化功能关闭(默认值),会对group by 的const 进行hash 重分布
1:表示功能开启,不对常量进行重分布

GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
118
注:
select
count(1) from
t1 group by 'a';
常量列要带上单引号
select a from t1 group by 1; group by 中的1 表示按投影列的第一个元素(a)
进行重分布

库级别增量同步要求源数据库与目标数据库下的所有表的表名及列名完全
一致。如果有部分表不需要同步,可以使用排除表功能排除掉这些表。
下面按照步骤详细介绍:
修改任务文件config_task.xml,该文件在读端,管理端各有一份,如果
同步工具安装后再修改该文件请确保两处配置文件一致。


id="server1"
mqType="kafka" queueName="8tto8aMQ" dataRecoveryMode="file"
isHighAvailable="false">
httpPort="8080" isTableHotPatch="true"/>
readParseAdapter="adapter" user="root" password="root" queueSize="10000"
openMonitor="true" monitorInterval="300" rpcPort="9191" sshPort="22"/>

id="8t_8a_5.1_5.2">


GBase RTSync 同步工具手册
- 136 -
南大通用数据技术股份有限公司
charset="UTF8"
type="SQLSERVER"
startLSN="0"
fetchSize="500"
maxRecordsPerRead="200"
maxSizeOfPerRecord="1024"
timeOut="2"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://192.168.4.206:1433;DatabaseName=master "
user="cdccp"
password="sqlserver"
catalog="test"
columnTypeFormat="time=hh:mm:ss.SSSSSS;date=yyyy-MM-dd;datetime=yyyy
-MM-dd HH:mm:ss.SSSSSS;smalldatetime=yyyy-MM-dd
HH:mm:ss.SSSSSS;datetime2=yyyy-MM-dd HH:mm:ss.SSSSSS"
>

charset="UTF8"
type="GCLUSTER"
commitSize="100"
queueSize="20000"
user="gbase"
password="gbase20110531"
driver="com.gbase.jdbc.Driver"
catalog="testdb"
timeOut="2"
isInitMetadata="false"
url="jdbc:gbase://192.168.5.5:5258/gbase?useOldAliasMetadataBehavior
=true&rewriteBatchedStatements=true&connectTimeout=0&socketT
imeout=0"
>





GBase RTSync 同步工具手册
南大通用数据技术股份有限公司
- 137 -

sourcePkColName="" targetTableName="" targetPkColName="" />

sourcePkColName="" targetTableName="t2" targetPkColName="" />






修改消息队列配置文件:config_kafka_8tto8aMQ.properties。

GBase RTSync 同步工具手册
- 138 -
南大通用数据技术股份有限公司
#kafka 主题
topic.name=8tto8a
#producer conf
#kafka集群ip及服务端口
bootstrap.servers=192.168.5.11:9092,192.168.5.12:9092
#批量发送数据到kafka的批次数
kafka.batch.commit.count=400
#批量发送数据到kafka等待的超时时间,单位毫秒
kafka.batch.commit.time=100
#kafka 发送数据到kafka异常重发的次数,超过该次数仍然未成功同步工具将退出服务
kafka.resend.max.retries=3
#kafka 接收数据的应答机制。
0代表立即返回,
无论数据是否成功写入kafka;1代表leader
节点成功写入磁盘后才返回结果;all代表所有节点都要写入磁盘才返回结果。根据数据安
全性要求可以实际配置。
kafka.acks=all
#kafka生产者其他必要参数配置,参数信息为标准的kafka生产者参数。
kafka.producer.paramers=request.timeout.ms=30000;metadata.fetch.timeout.
ms=30000
#consumer conf
#kafka所使用zookeeper信息
zookeeper.connect=192.168.5.21:2181,192.168.5.22:2181,192.168.5.23:2181
#kafka消费者组名称
group.id=test
#自动提交时间间隔,一般不用修改
auto.commit.interval.ms=1000
#zookeeper follower能落后leader多久还被认为是活着的
zookeeper.sync.time.ms=2000
#zookeeper session超时时间,如果这段时间没有收到zk的心跳,则认为kafka服务异常
zookeeper.session.timeout.ms=4000
#发送数据到kafka单条数据的最大值,单位字节,超过该大小经进行分包发送
send.data.max.size=1000000
#从kafka获取单条数据的最大值,单位字节,该值应该大于等于send.data.max.size
fetch.message.max.bytes=1000000
完成后,既可启动同步工具。使用root 用户登录192.168.5.3,执行如下

GBase RTSync 同步工具手册
南大通用数据技术股份有限公司
- 139 -
命令启动同步工具组件:
# cd /opt/RTSync /
# sh RTSyncManagerServer.sh start
启动后,同步工具将开始同步数据工作。
可以使用如下命令监控同步工具运行状况。
# tail -f logs/sync.log

GBA-01BR-0050
错误码
错误标识
错误显示信息
GBA-01BR-0050

Get Partition Information error
错误出现原因
获取表分区信息失败
分析与建议
检查表.par 文件的状态,权限和内容