在注意到我们的集群在经过大量插入操作后在2-3个叶子上运行得很热(我们有30个叶子,每个叶子有32G内存)后,我最终深入研究了数据倾斜。基本上,我们的内存在这些节点上几乎达到100%,导致集群blockage.Restarting,这些叶子没有释放内存(在表内存达到最大分配大小)。在那个阶段的帮助是分配更多的内存给这2-3个叶子(它们是aws实例)。然而,这并不是我们想要的方法--它是一个绝望的变通方法。奇怪的是,除了这2-3个叶子内存耗尽之外,其他叶子的内存消耗在20-30%左右。
检查此https://docs.memsql.com/docs/data-skew并运行这些查询,我注意到row_skew的所有值都小于10 %,但某些表的memory_skew值大于40%。
所以我想知道是否有什么需要检查,改进,优化?
发布于 2016-10-18 00:43:50
行偏差低但内存偏差高可能是因为您有可变大小的数据类型(比如像varchar这样的字符串),并且出于某种原因,有些分区有更多更大的字符串。
首先,您可以查看哪些特定字段是高度不对称的--可能类似于select partition_id(),avg(length(s)) from t group by partition_id()。然后,根据您找到的内容,您可能希望查看数据是否存在意外问题,或者是否需要更改分片密钥。
发布于 2016-10-24 13:01:12
检查具有较高内存使用率的节点上的孤立分区(显示群集状态或解释清除孤立分区)。
https://stackoverflow.com/questions/40089322
复制相似问题