什么是数据倾斜,如何检查?
答:数据倾斜即多个DN内数据分布不均,对于hash分表策略,如果分布列选择不当,可能导致数据倾斜,查询时部分DN出现效率短板,从而影响整体查询性能。因此在采用Hash分表策略之后需对表的数据定期进行数据倾斜性检查或监控,以确保数据在各个DN上是均匀分布的。执行如下语句,查看各DN内元组数目。
gaussdb=# SELECT a.count,b.node_name FROM (SELECT count(*) AS count,xc_node_id FROM tablename GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count DESC;
如果各DN内元组数目相差较大(如相差数倍、数十倍),则表明已发生数据倾斜现象。需要重新选择分布列,当前不支持通过ALTER TABLE语句调整分布列,因此调整分布列时需要重新建表。