数据倾斜预警—数据导入存储倾斜即时检测
【摘要】 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)