Oracle - Calcular PFCTREE de tablas y de índices

 
Vista:

Calcular PFCTREE de tablas y de índices

Publicado por Isidro (1 intervención) el 15/06/2006 17:04:28
Necesito ayuda URGENTE, por lo que os agradezco cualquier colaboración:

Necesito calcular el valor PCTFREE óptimo para una tabla en Oracle. Se que la fórmula viene a ser : PCTFREE = 100 + ( 5 - tamaño promedio fila) + (tamaño promedio fila / tamaño promedio fila actualizada). Tengo calculado el tamaño promedio de una fila en la tabla a partir de las estadísticas de Oracle, pero no tengo forma de obtener el tamaño promedio de una fila actualizada a partir del diccionario de oracle ¿Alguién sabe dónde puede obtener este dato?

También necesito saber como calcular (la fórmula) el valos SIZE de una tabla tipo CLUSTER.

Y por último, necesito saber en función de qué parámetros se elige un BLOCKSIZE (tamaño de bloque) mayor o menor. Por ejemplo, que es lo que me determina para escoger un BLOCKSIZE de 16K en lugar de uno de 4K.

Muchas Gracias.
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:Calcular PFCTREE de tablas y de índices

Publicado por emilio (4 intervenciones) el 17/06/2006 13:26:59
size es la cantidad de bytes esperada en cada agrupacion.
Para dos tablas agrupadas Size = longitud promedio registro tabla principal + bytes de su clave primaria (que actúa como clave de agrupación) + N * longitud promedio de un registro de la segunda tabla. N = promedio de registros de la segunda tabla agrupados con un solo registro de la primera tabla.
La longitud promedio de un registro es el campo AVGROW_LEN que se obtiene al describir cada tabla.
Luego interesa incrementar el valor obtenido de size en algún porcentaje.

Creo que evaluar la fórmula de PCTFREE no es nada fácil. Supongo que habrá que estimar el valor AVGROW_LEN antes y después de las actualizaciones. Sobre eso no sé decir más.

El papel del PCTFREE cuando se trata de tablespaces de índices es un misterio para mí (y para otra mucha gente)

BLOCKSIZE se usa para definir un tamaño de bloque alternativo, esto suele emplearse en tablespaces de índices en cuyo caso interesa siempre darle un valor de bloque grande.
Se usa conjuntamente con el parametro db_nKblock_size= x M para el establecimiento del caché alternativo correspondiente con el tamaño de bloque a definir con BLOCKSIZE.
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:Calcular PFCTREE de tablas y de índices

Publicado por emilio (4 intervenciones) el 18/06/2006 11:22:45
He preguntado a mi consultor de la asignatura de SGBD ( así cualquiera !) sobre el significado del parámetro PCTFREE aplicado a los bloques de índices y realmente difiere del caso de bloques de datos.
Para lun índice PCTFREE se establece para las inserciones de entradas nuevas en el bloque, Según se puede leer en la documentación (oracle9i) del Administrator guide capítulo 16:

Specify Index Block Space Use

When an index is created for a table, data blocks of the index are
filled with the existing values in the table up to PCTFREE. The
space reserved by PCTFREE for an index block is only used when a
new row is inserted into the table and the corresponding index
entry must be placed in the correct index block (that is, between
preceding and following index entries).

If no more space is available in the appropriate index block, the
indexed value is placed where it belongs (based on the lexical set
ordering). Therefore, if you plan on inserting many rows into an
indexed table, PCTFREE should be high to accommodate the new index
values. If the table is relatively static without many inserts,
PCTFREE for an associated index can be low so that fewer blocks
are required to hold the index data.
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