2017-01-23 4 views
-1

определить, косых множитель таким образом:Что такое плохие номера для коэффициента перекоса в Teradata?

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 Гб довольно высокий 98%. Как действительно плохое число выше? Есть ли официальная статья о том, что более 10% должны быть перераспределены? Мне нужно это, чтобы обосновать требования к разработчику mart. Я нашел только this

ответ

2

A Косой коэффициент означает, что на максимальном AMP имеется около 40% данных по сравнению со средним значением. Это может быть приемлемо (конечно, зависит от), поговорите со своим DBSa, что они обычно считают слишком большим.

С другой стороны означает, что есть от 40 до 50 раз больше данных на макс-AMP, и это Waaaay много.

Это сравнивает оба способа расчета перекос:

SELECT 
    t.DatabaseName 
    ,t.TableName 

    -- currently used diskspace in GB 
    ,SUM(t.CurrentPerm)/1024**3 (DEC(9,2)) AS CurrentPermGB 

    -- currently needed diskspace in GB to store this table as standalone (due to Skew) 
    ,MAX(t.CurrentPerm)/1024**3 * (HASHAMP() + 1) (DEC(9,2)) AS SkewedPermGB 

    ,SkewedPermGB - CurrentPermGB AS WastedPermGB 

    -- AMP with higehst disk usage 
    ,MAX(t.MaxPermAMP) AS SkewedAMP 

    -- skew factor, 1 = even distribution, 1.1 = max AMP needs 10% more space than the average AMP 
    ,MAX(t.CurrentPerm)/NULLIF(AVG(t.CurrentPerm),0) (DEC(5,2)) AS SkewFactor 

    -- skew factor, between 0 and 99. Same calculation as WinDDI/ TD Administrator 
    ,(100 - (AVG(t.CurrentPerm)/NULLIF(MAX(t.CurrentPerm),0) * 100)) (DEC(3,0)) AS SkewFactor_WINDDI 
FROM 
(
    SELECT 
     DatabaseName, 
     TableName, 
     CurrentPerm, 
     CASE WHEN CurrentPerm = MAX(CurrentPerm) OVER (PARTITION BY DatabaseName, TableName) THEN vproc END AS MaxPermAMP 
    FROM dbc.TableSizeV 
    WHERE DatabaseName = '???' -- 
) AS t 
GROUP BY 1,2 
HAVING SkewFactor > 1.1 -- or whatever 
    AND SkewedPermGB > 10 -- or whatever 
ORDER BY WastedPermGB DESC 
; 
1

Нет никаких магических чисел, но наличие таблицы с 98% -ным перекосом означает, что почти все данные лежат в одном AMP, что означает: (1) вы теряете преимущества производительности параллельная база данных (2) вы создаете несбалансированную нагрузку на систему.

+0

Я не могу процитировать точный источник, но создал сценарий, основанный на нем (вероятно, сам Teradata), где вы хотели бы наблюдать за перекоса коэффициент 50+ на больших таблицах. –

+0

@access_granted - так 50 - это O.k.? 49? 48? 47 ?. Каждый из них имеет свое влияние –