Oracle - ¿Cómo se calcula el tamaño de una tabla?

 
Vista:

¿Cómo se calcula el tamaño de una tabla?

Publicado por Sandra (6 intervenciones) el 27/10/2004 14:13:42
Necesito saber como se dimensiona el tamaño de una tabla.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Cómo se calcula el tamaño de una tabla?

Publicado por Jorge-DBA (123 intervenciones) el 27/10/2004 23:55:10
Primer mensaje

Que tal Sandra:

El cálculo de dimensionamiento de los segmentos de la base de datos es una tarea que tiene responsabilidad el DBA, en mi caso he dimencionado tablas, índices, Vistas Materializadas, etc. cualquier tipo de objeto que tenga que ver con el storage de la base, duarante casi 5 años, es una tarea muy compleja y que lleva bastante comprención sobre el comportamiento del crecimiento semanal, mensual o anual de la base de datos, he dimencionado Bases de datos pequeñas y las llamadas VLDB (Very large Data Base), que generalmente son data Ware Houses aproximadamente de 40 Tera Bytes de crecimiento anual, dependiendo de su dimencionamiento es como se verá afectado a futuro la fragmentación, una tabla o índice mal calculado puede provocar serios problemas en el entorno, en las nuevas versiones se ha trabajado mucho para simplificar la tarea de mantenimiento.

Tienes que tomar en cuenta el Bloque del sistema operativo y el bloque de datos de Oracle que se configuró en su creación que debe ser múltiplo del S.O., o bien a partir de Oracle 9.X puedes tener diferentes mediadas de bloques de datos en los Tablespaces, ademas que los puedes gestionar localmente haciendo cuadrículasd de información.

En el siguiente ejemplo te muestro como es que se dimencionan los objetos, es casi preciso y tiene una variación ya que son estimaciones dependiendo la tendencia de la tabla, ya que puedes dividirla en tablas históricas, de catálogo, temporales o de agregación, dependiendo de estas tendencias, la configuración es diferente por su dinamísmo que cumplen en la BD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo se calcula el tamaño de una tabla?

Publicado por Jorge-DBA (123 intervenciones) el 27/10/2004 23:55:57
Segundo mensaje:

Calculo sobre un segmento de tipo tabla no agrupada.

Calcula la cantidad de espacio que se va a utilizar en la cabecera del bloque, el tamaño de la cabecera es de 90 bytes, si utilizas un bloque de 2K quedarán 1.958 libres minetras que si utilizas uno de 4K habría 4.006 bytes libres

2048 - 90 = 1958 bytes disponibles.

A continuación multiplica el espacio libre por el factor que viene determinado el enl parámetro PCTFREE del segmento para determinar el espacio que se va a reservar para la actualización de filas.

Si utilizas un valor de PCTFREE de 10, multiplica el espacio libre disponible por 0,10 tal y como se muestra a continuación:

1958*(pctfree/100) = 1958*.01 = 196 (redondeado)

del espacio disponible, 196 bytes son para las aplicaciones de las filas. El espacio libre disponible es el espacio libre del bloque menos el espacio rerservado por PCTFREE:

1958 - 196 = 1762 BYTES DISPONIBLES.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo se calcula el tamaño de una tabla?

Publicado por Jorge-DBA (123 intervenciones) el 27/10/2004 23:56:28
Tercer Mensaje:

De los 2.048 bytes del bloque, 1762 se utilizan para almacenar filas.

En el siguinete paso habrá que calcular el espacio que se va a utilizar por fila. para ello hayq ue estimar primero la "longitud media de las filas" AVERAGE LENGTH de cada valor de una fila. si no dispones de ningun dato, realiza una estimación de la longitud real de los valores de una columna. No utilices como longitud real la longitud de una columna a menos que los datos vayan a llenar siempre por completo la columna.

Por ejemplo vamos a suponer que tenemos una tabla de tres columnas de tipo VARCHAR2(10). La longitud media de las filas no puede excder de 30 posiciones su longitud real depende de los daros que se vayan a almacenar en ellas.

Si dispones de algún dato de ejemplo, podrías utilizar la función de Oracle VSIZE para determinar el espacio real que han utilizado los datos. ejemplo:

select AVG(NVL(VSIZE(Columna1),0))+
AVG(NVL(VSIZE(Columna2),0))+
AVG(NVL(VSIZE(Columna3),0))) Long_media
from tabla
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo se calcula el tamaño de una tabla?

Publicado por Jorge-DBA (123 intervenciones) el 27/10/2004 23:57:17
Cuarto y ultimo mensaje:

En este ejemplo se han calculado la longitud media de cada columna y luego se han sumado esas medias para determinar la longitud media o el Average Lenght.

Vamos a suponer que en el ejemplo la longitud media de las filas es de 24 bytes. A esta cantidad total vamos a sumarle 1 byte por cada columna que ya haya en la tabla, da un total de 27 bytes por fila. Si en la tabla hay columnas que contienen datos de más de 250 caracteres, añade un byte adicional por cada una de esas columnas, por último añade 3 bytes para la cabecera de la fila.

Espacio utilizado = longitud media + 3 + numero de columnas +numero de columnas extensas.

En la tabla ejemplo el espacio por fila es el siguinete:

espacio utilizado por file= 24 + 3 + 3 + 0 = 30 bytes por fila.

Dado que disponemos de 1.762 bytes y 30 bytes por fila, se puede incluir 58 filas pen cada bloque.

filas por bloque =TRUNC(1762 BYTES LIBRES / 30 BYTES OIR FILA) = 58 FILAS POR BLOQUE.

al poderse incluir 58 filas por bloque, en cuanto puedas estimar el número de filas que esperas que haya, podrás estimar eñ númro de bloques de datos de Oracle que se requieren.

Saludos y Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo se calcula el tamaño de una tabla?

Publicado por Sandra (6 intervenciones) el 28/10/2004 14:07:43
Jorge, muchas gracias.

Eres muy amable de darte el tiempo para responder, me va a servir mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo se calcula el tamaño de una tabla?

Publicado por Jorge-DBA (123 intervenciones) el 28/10/2004 17:39:08
Ok, por nada.

Si tienes instalada la herramienta de Oracle Enterprise Manager puedes indicarle al producto que en base a una tabla ya creada puedes dimensionarla en la opción de "STORAGE" o "ALMACENAMIENTO" das un click en esa opcion y te va a dar 2 opciones
1)Cálculo Explícito
2)Cálculo Automático.

En explícito tienes que poner ma dedia en storage que se requiera con el cálculo que te di anteirormente,
y en el Cálculo Automático, solo tienes que poner la carga inicial de los registros por medio de radio de incremento, esta muy buena esta opcion por que solo pones el número de registros que se estima va almacenar en diferentes intervalos en el tiempo:

Diario, mensual, o anual.

Chécalo esta muy bien, la desventaja es que tienes que hacerlo tabla por tabla.

Saludos Sandra y buen día.

Jorge - DBA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar