GaussDB业务分布键选择不合理导致数据分布不均匀
【摘要】 问题现象数据磁盘使用率不均衡原因分析客户环境为分布式环境3C3D,从监控指标分析,dn_6001、dn_6002、dn_6003分片的磁盘使用率比其他2个分片高。怀疑是数据分布不均匀导致。分析过程1. 登录到数据库节点,执行如下命令查看数据盘使用率,数据目data1的使用率10%,其他数据目录均为2%。gs_ssh -c "df -h"2. 进入到数据目录data1下,执行如下命令查看文件大...
- 问题现象
数据磁盘使用率不均衡

- 原因分析
客户环境为分布式环境3C3D,从监控指标分析,dn_6001、dn_6002、dn_6003分片的磁盘使用率比其他2个分片高。

怀疑是数据分布不均匀导致。
- 分析过程
1. 登录到数据库节点,执行如下命令查看数据盘使用率,数据目data1的使用率10%,其他数据目录均为2%。
gs_ssh -c "df -h"

2. 进入到数据目录data1下,执行如下命令查看文件大小,显示base目录占比最大,怀疑数据分布不均匀。
du -sh *

3. 执行如下SQL,查询倾斜率较大的表
select * from pgxc_get_table_skewness order by skewratio desc limit 10;

查询结果可以分析出表“t1”的数据倾斜率为100%,完全倾斜。(一般默认倾斜率大于10%,就代表数据已经倾斜)
4. 执行如下SQL,查看表的数据分布情况
select schemaname,tablename,nodename,pg_size_pretty(dnsize) dnsize,dnsize/(sum(dnsize) over ()) as percent from table_distribution('root','t1');

根据查询结果可以分析出表“t1”的数据全部分布在dn_6001所在的分片
5.查看表“t1”的分布列为“a”,分布方式为hash分布。

6. 查看表“t1”字段“a”的值,全部为固定值“1001”

综上分析,表“t1”的分布键为固定值,导致数据全部被分布到dn_6001节点,导致该分片所对应的数据目录用率比其他节点高。
- 处理方法
建议业务调整分布键,使数据均匀的分布到所有节点,参考分布式表的设计规范:GaussDB 文档中心
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)