1. 前置条件
1) 开通1个ADB PG实例。
2) 某库里存在若干张表,其中某表存在较严重的数据倾斜。
2. 操作步骤
1) 登陆实例控制台,从节点监控观察到存在数据倾斜。
2) 登陆数据库,执行命令排查具体倾斜的表。
3) 执行命令修改分布列,解决数据倾斜问题。
详细操作步骤如下:
• 首先,登录阿里云控制台,选择ADB产品,进入已创建的ADB PG实例,进入节点监控页面巡检,可以在下图中看到存储使用量和存储水位发生了数据倾斜,黄色的线明显高于棕色的。
• 点击DMS产品,选择已创建的ADB PG实例,进入数据库执行相关语句,首先对大表进行排序,找出大表,然后根据找到的表名查找数据倾斜情况,数据都落在一个节点上,如下图。
• 性能测试,查看此时执行的速度为800ms,如下图:
从如上执行结果找出数据倾斜的原因,是建表分布键的类型是varchar类型,该类型不适合做分布键,填充的大量的重复数据导致数据都在一个节点上。
• 执行命令修改分布列,如修改为随机数ID。
• 再次执行查找数据倾斜情况的语句,如下图,数据已随机均匀分布在节点上。
• 性能测试,执行SQL语句:select count(1) form tb_unbalance。
如下图执行速度为400ms,执行速度比原来快一倍,原因是之前的计算都在一个节点上,重新分布后,数据在四个节点并行计算,所以性能有明显提升。