数据倾斜预警—数据导入存储倾斜即时检测

举报
1024bug小姐 发表于 2021/11/22 14:30:38 2021/11/22
【摘要】 1.简介存储倾斜即时检测数据,是通过copy或者insert命令入库完成后,根据各DN的入库情况,秒级告警,发现数据倾斜;是避免产生数据倾斜的手段之一;2.原理介绍DML执行到最后,CN上会统计各个DN返回行数,该特性利用CN上的这个行数计算出倾斜率,倾斜率越大代表该次入库数据越倾斜;可以看出倾斜率比值范围为0-1,计算倾斜率需要统计所有DN返回行数的最大值、最小值和总行数。倾斜率定义:倾斜...

1.简介

存储倾斜即时检测数据,是通过copy或者insert命令入库完成后,根据各DN的入库情况,秒级告警,发现数据倾斜;是避免产生数据倾斜的手段之一;

2.原理介绍

DML执行到最后,CN上会统计各个DN返回行数,该特性利用CN上的这个行数计算出倾斜率,倾斜率越大代表该次入库数据越倾斜;可以看出倾斜率比值范围为0-1,计算倾斜率需要统计所有DN返回行数的最大值、最小值和总行数。

倾斜率定义:倾斜率=(所有DN中数据返回行数最大值 — 所有DN中数据返回行数最小值)/ 所有DN数据返回总行数

超出阈值范围时,记录告警日志,并上报告警。


3.适用范围

1)不同类型表的gds/copy/insert/create table as select/select into from,满足阈值条件,触发告警;

2)其它DML操作语句,如select/update/delete/truncate等不会触发告警;

3)复制表、临时表不会产生告警;


4.使用方法

通过设置2个GUC参数 table_skewness_warning_threshold 和   table_skewness_warning_rows,进行功能开启并使用;


table_skewness_warning_threshold :表示倾斜检测告警阈值,取值范围0-1.0,默认值为1. 当计算出的倾斜率大于倾斜检测告警阈值时,进行倾斜告警。当倾斜检测告警阈值为1时,该功能关闭,无论DN返回行数是多少,都不会进行告警;当倾斜检测告警阈值为0时,只有所有DN返回行数相同时,才不会进行告警,一般没有意义。

table_skewness_warning_rows: 该参数表示其鞥写检测的最小行数(单个DN),取值范围0-INT_MAX,默认值为100,000,当所有DN返回总行数大于倾斜检测最小行数乘以DN数时,计算倾斜率,否则认为不满足阈值条件,不会上报告警,这样就避免了导入很少的数据导致的误报场景。

5.告警显示信息

WARNING: Skewness occurs, table name: xxx, min value: xxx, max value: xxx, sum value: xxx, avg value: xxx, skew ratio: xxx HINT: Please check data distribution or modify warning threshold

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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