Está en la página 1de 4

CarlosAL

Reflexiones sobre TERADATA, Oracle, Linux y todo lo que ocurre en la vida de un profesional de IT.

Skew Factor en Teradata

Uno de los conceptos más importantes en Teradata es el ‘skew factor‘ (que podríamos traducir algo así
como ‘factor de sesgo’) en la distribución de los datos de las tablas entre los AMP’s.

Y es tan importante porque está directamente ligado al concepto de paralelismo y al funcionamiento de


Teradata. Como hemos dicho otras veces, el paralelismo tiene sus -casi siempre- cosas buenas (muchos
procesos trabajando a la vez) y sus -a veces- cosas malas (la tarea tarda tanto como el último de los
procesos…). Es aquí donde entra el ‘skew factor‘ en la distribución de datos entre los AMP’s: si todos los
AMP’s tienen un volumen de datos similar la tarea se realizará en paralelo de la forma más eficiente. Si
por el contrario hay unos AMP’s que tienen poco volumen de datos y otros que tienen mucho volumen,
estos últimos tendrán que hacer casi todo el trabajo y la tarea no terminará hasta que no acabe el último
de ellos (aquí se abre un universo de metáforas con el mundo laboral y tal…)

Por ello hay quien define el ‘skew factor‘ como la función inversa de la ‘Parallel Efficiency‘ (eficiencia
paralela): cuanto menor sea el ‘skew factor‘ mayor será la ‘Parallel Efficiency‘.

La fórmula para calcular el ‘skew factor‘ es:

100-((Media de CurrentPerm/Máximo de CurrentPerm) X 100).

Por regla general se considera aceptable un ‘skew factor‘ menor o igual que 10, mientras que si el ‘skew
factor‘ es superior a 10 se recomienda revisar la definición del ‘primary index‘ para que el algoritmo ‘hash‘
distribuya los datos de la tabla de una forma más equitativa entre los AMP’s.

Otra cosa a tener en cuenta es que si la tabla es muy pequeña el ‘skew factor‘ deja de ser significativo.

! " # !$ !! "$ %&


! " !
! #! " ! #!
$%% &' ! " ( ! ")$%%"" * + ,""
- # ./ 0 1"-
/ 0 2 *3
.4 5 6 78 6
' 0 ! 7
0 7
9

))) :; 2 ,< = > 2 < ; 2


))) ; ; : ? = $ 2

@; ! ! #! # ./ 0 1"

%$ A B$$ CD% A B$$ CD% C2C%


%, C$ B+, C$ B+, ,<2AD
%A <CE <+C <CE <+C $%2<B
%< A BDE BCD A BDE BCD E2<B
%+ $ BD% B,D $ BD% B,D E2%%
%C AD <%% AD <%% C2,+
%E B$A B,% B$A B,% E2%A
%D ,$ +%< ,$ +%< A%2%%
%B EC D%% EC D%% A$2D,
$% $ A,% <<D $ A,% <<D E2,A
$$ ++E %+C ++E %+C $,2,C
$, E<D %A, E<D %A, E2+A
$A $ ,CA C$C $ ,CA C$C E2,,
$< $,D <%% DBC $,D <%% DBC D2E$
$+ $,$ ,DB E,D $,$ ,DB E,D $A2+,
$C ,A E%< %C< ,A E%< %C< E2+,
$E CE AB$ <DD CE AB$ <DD D2A+
$D A< A%< A< A%< $C2,+
$B E<D %A, E<D %A, B2D$
,% EC ,DD EC ,DD $E2,,
,$ E, $B, E, $B, ,$2CE
,, ++ D%D ++ D%D B2$E
,A A+ D<% A+ D<% $,2+%
,< DC% CE, DC% CE, <2<B

Saludos.

Carlos.

" # !$ !! "$ %&


sum(columnlength)
from
dbc.columns
where
databasename = ‘desa_edw_tb’
group by 1

Responder
CarlosAL dice:
18 abril \18\UTC 2014 en 11:00
Juan Pablo:
La documentación de Teradata da información acerca de cómo estimar el tamaño de una tabla en
función de su estructura (y del número de filas previsto, claro). Ello incluye conocer los tipos de
los datos de las columnas (y el tamaño medio de las columnas de longitud variable como los
VARCHARS), columnas “NULL” o “NOT NULL” y columnas comprimidas (“COMPRESS”) con
sus bits de presencia, “overhead” de las estructuras etc…
También influyen cosas como el número de AMPs del sistema, ya que una tabla colocará
cabeceras (“headers”) en cada uno de ellos.También habría que estimar el tamaño de los índices
secundarios, si los hubiera.
Yo utilizo una hoja excel que construí hace tiempo para una estimacón rápida de los tamaños.
Pero hay que saber que se trata siempre de estimaciones -muy aproximadas, eso sí-, no de
cálculos.
Saludos.
Carlos.

Responder
Carlos dice:
20 junio \20\UTC 2016 en 16:04
Buenas Carlos,
me podrías decir en que documentación de Teradata te indica como estimar el tamaño de una
tabla. Con la cantidad de documentación que hay a veces se pierde uno.
Gracias,
Carlos.

Responder

Blog de WordPress.com.

" " # !$ !! "$ %&

También podría gustarte