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
;
Я не могу процитировать точный источник, но создал сценарий, основанный на нем (вероятно, сам Teradata), где вы хотели бы наблюдать за перекоса коэффициент 50+ на больших таблицах. –
@access_granted - так 50 - это O.k.? 49? 48? 47 ?. Каждый из них имеет свое влияние –