GaussDB(DWS)性能场景之copy慢怎么办

举报
Arrow0lf 发表于 2022/11/13 18:00:57 2022/11/13
【摘要】     GaussDB(DWS)提供了多种入库方式:外表导入、GDS导入、copy导入等。JDBC场景下,使用copymanager也是一种常用的导入方式,内部实现也是通过copy实现的。用户在实际使用过程中,可能会遇到copy慢的场景,本文主要列举了出现copy慢场景时的常见原因和处理方法供大家参考。场景1:日志归档参数未关闭    8.1.0版本默认打开了日志归档参数archive_mo...

    GaussDB(DWS)提供了多种入库方式:外表导入、GDS导入、copy导入等。JDBC场景下,使用copymanager也是一种常用的导入方式,内部实现也是通过copy实现的。用户在实际使用过程中,可能会遇到copy慢的场景,本文主要列举了出现copy慢场景时的常见原因和处理方法供大家参考。

场景1:日志归档参数未关闭

    8.1.0版本默认打开了日志归档参数archive_mode,其余版本该参数默认关闭。开启该参数后,进行日志归档时会加全局锁,对实时查询和实时入库等场景影响较大。当实时入库场景出现慢的场景时,应首先排查该参数是否开启,如果开启需要关闭该参数。

    排查方法:连接数据库,执行show archive;若结果为on表示存在该问题

    解决方法:在管控面设置该参数为off,或通过gs_guc命令关闭:gs_guc reload -Z coordinator -Z datanode -N all -I all -c "archive_mode = off"

场景2:max_query_retry_times开启(仅线下651版本涉及)

    在651版本中,当通过copy的方式导入数据,且在copy过程中有报错,触发cn retry后,可能会出现copy线程长时间不退出的情况,影响导入效率。

    排查方法:651版本,业务侧使用了copy入库,且max_query_retry_times不为0。

    解决方法:全局关闭max_query_retry_times或在copy语句执行前执行:set max_query_retry_times = 0;

场景3:通过等待视图观察等待事件

    排除上述两种场景外,当出现copy慢的场景时,需要结合等待视图pgxc_thread_wait_status定位原因:

    1. copy语句对应的等待视图中,等待状态全部为wait cmd:对应场景为源端供数慢,此类场景说明DWS侧已完成写入,正在等待上游继续供数,此类场景需要排查上游数据读取是否有瓶颈

    2. 多个copy语句的等待视图中,在等待某个或某组固定的DN:入库数据存在倾斜或存在慢节点:

    排查方法:

    (1)首先查看目标表的分布列,结合入库数据排查在分布列上是否存在倾斜,如果存在倾斜,需要调整分布键

    (2)登录对应DN所在的节点,查看节点上是否存在IO瓶颈,参考如下方法排查:https://bbs.huaweicloud.com/forum/thread-152917-1-1.html

    3. 其他等待事件

    当排除上述场景外,说明等待视图中存在其他等待事件,需要结合等待视图中的等待事件具体分析,常见的等待事件及处理方法可以参考:https://bbs.huaweicloud.com/blogs/338836

使用建议:

    使用copy的入库场景一般分为两种:数据攒批入库和流式场景实时入库:

    攒批入库:单次copy入库的数据量较大,入库频次低,数据规模一般在十万或百万级别;此类场景一般由上游业务攒批后一次性入库,对单条数据的时效性要求不高,这种情况下目标表适合列存表

    实时入库:单次copy入库的数据量较少,数据量在几十到几百条,入库频繁,由上层业务实时调度,对入库时效性要求很高。此类场景目标表需要使用行存表,避免使用列存(列存表小批量导入存在CU空洞情况:https://bbs.huaweicloud.com/forum/thread-100112-1-1.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。