在注意到我们的群集经过大量插入操作(我们有30个叶子,每个32G ram)后,我们的群集在2-3个叶子上运行时,我最终深入挖掘了Data Skew。基本上我们的内存几乎达到100%导致群集阻塞的节点。重新启动这些叶子并没有释放内存(在表内存中达到最大分配大小)。在那个阶段帮助的是为2-3个叶子分配更多的内存(它们是aws实例)。然而,这不是一个理想的方法 - 这是一个绝望的解决方法。奇怪的是,除了这些耗尽内存的2-3片叶片外,其他叶片的内存消耗量约为20-30%。
检查此https://docs.memsql.com/docs/data-skew并运行这些查询我注意到row_skew的所有值都是<对于某些表,10%但memory_skew值> 40%。
所以我想知道是否有任何需要检查,改进和优化的东西?
答案 0 :(得分:0)
低行偏斜但高内存偏斜可能是因为你有可变大小的数据类型(比如像varchar这样的字符串),并且由于某种原因存在偏差,因为某些分区有更多更大的字符串。
首先,您可以查找哪些特定字段高度偏斜 - 可能是像partition_id()中的select partition_id(),avg(length(s))。然后,根据您的发现,您可能希望查看数据是否存在意外问题,或者是否需要更改分片键。
答案 1 :(得分:0)
检查具有更高内存使用量的节点上的孤立分区(显示群集状态或EXPLAIN CLEAR ORPHAN PARTITIONS)。