我用这种方式确定偏斜因子:
SELECT
TABLENAME,
SUM(CURRENTPERM) /(1024*1024) AS CURRENTPERM,
(100 - (AVG(CURRENTPERM)/MAX(CURRENTPERM)*100)) AS SKEWFACTOR
FROM
DBC.TABLESIZE
WHERE DATABASENAME= <DATABASENAME>
AND
TABLENAME =<TABLENAME>
GROUP BY 1;
对于一些大小约为600 Gb的表,偏斜系数为30%。对于尺寸为10 Gb的桌子,相当高的98%。上面这个数字到底有多糟糕?有没有官方文章说超过10%应该重新分配?我需要它来证实对mart开发者的要求。我发现只有this
答案 0 :(得分:2)
偏差因子 30 意味着最大AMP的数据与平均值相比大约多40%。这可能仍然可以接受(当然取决于),请与您的DBSa谈谈他们通常认为太大的内容。
另一方面, 98 意味着在max-AMP上有40到50次次更多的数据,而且还有很多。< / p>
这比较了两种计算偏斜的方法:
ng-if
答案 1 :(得分:1)
没有任何幻数,但是有一个98%倾斜的表意味着几乎所有的数据都在一个AMP中,这意味着(1)你正在失去并行数据库的性能优势(2) )您正在系统上创建不平衡负载。