南大通用GBase 8a同步日志归档老化功能使用说明

南大通用GBase 8a数据库集群,支持表级的故障定位和恢复,内部通过同步程序进行数据一致性校验和恢复,其同步日志记录在计算节点的log目录下,且以表和发起日期为单位。如果某些节点故障时间较长,需要同步的表很多,就会导致产生大量的同步日志文件。GBase 8a提供了同步日志归档功能,来自动对这类日志文件做归档和老化。

南大通用GBase 8a做distinct、group和join时避免严重数据倾斜导致的性能问题

在执行distinct、group、join是由多个列参数时,如果投影列里没有Hash分布列,则会选择一个列做hash动态重分布。GBase 8a数据库集群通过_t_gcluster_distinct_multi_redist和_t_gcluster_hash_redistribute_groupby_on_multiple_expression参数,可以指定多个列参与hash计算,避免GBase 8a做distinct、group、join时通过指定多列动态Hash重分布避免严重数据倾斜导致的性能问题。

南大通用GBase 8a性能优化案例,大量小表join时拉了复制表导致只有1个节点运行,gcluster_hash_redistribute_join_optimize 参数调整

在某个项目里,有接近20个表参与left join,但每个的数据量都超过6万行。在运行中,发现最耗时的阶段只有1个节点在运行,且产生了大量的临时中间文件。查看执行日志确认所有数据表都别拉成了复制表,最后在1个节点上运行。通过调整gcluster_hash_redistribute_join_optimize参数,强行将主表,虽然数据量也不多,拉成分布表,性能有1倍以上的提升。