una transponer tamaño tablas tabla saber registros quien modifico filas estimar dba datos convertir como columnas calcular auto_increment 11g oracle datatable

transponer - ¿Cómo predecir los tamaños de tabla Oracle?



tablas dba oracle (2)

Estoy tratando de hacer una predicción de crecimiento en algunas tablas que tengo y para eso tengo que hacer algunos cálculos sobre el tamaño de las filas, cuántas filas genero por día y bueno ... las matemáticas.

Estoy calculando el tamaño promedio de cada fila en mi tabla como la suma del tamaño promedio de cada campo. Entonces basicamente:

SELECT ''COL1'' , avg(vsize(COL1)) FROM TABLE union SELECT ''COL2'' , avg(vsize(COL2)) FROM TABLE

Suma eso, multiplica por el número de entradas de un día y trabaja las predicciones desde allí.

Resulta que para una de las tablas que he visto el tamaño resultante es mucho más pequeño de lo que pensé que sería y me hizo preguntarme si mi método era el correcto.

Además, no consideré el tamaño de los índices para mis predicciones, y por supuesto debería hacerlo.

Mis preguntas son:

  1. ¿Este método estoy usando confiable?

  2. Consejos sobre cómo podría trabajar las predicciones para los Índices?

He hecho mi búsqueda en Google, pero los métodos que encuentro son todos acerca de los segmentos y se extienden o bien los cálculos se basan en toda la tabla. Voy a necesitar el paso con la fila real de mi tabla para hacer las predicciones (tengo que analizar los datos en la tabla para calcular cuántos registros por día).

Y finalmente, esta es una aproximación. Sé que me faltan algunos bytes aquí y allá con gastos generales y esas cosas. Solo quiero asegurarme de que solo me faltan bytes y no gigas :)


1) Su método es sólido para calcular el tamaño promedio de una fila. (Aunque tenga en cuenta que si su columna contiene nulo, debe usar avg(nvl(vsize(col1), 0)) lugar de avg(vsize(COL1)) ). Sin embargo, no tiene en cuenta la disposición física de las filas.

En primer lugar, no tiene en cuenta la información del encabezado (tanto de bloques como de filas): no se pueden incluir 8k de datos en 8k bloques. Consulte la documentación sobre el formato del bloque de datos para obtener más información.

Entonces, las filas no siempre se almacenan cuidadosamente empaquetadas. Oracle deja espacio en cada bloque para que las filas crezcan cuando se actualicen (regidas por el parámetro pctfree ). Además, cuando se eliminan las filas, el espacio vacío no se recupera de inmediato (si no está utilizando ASSM con espacios de tablas gestionados localmente, la cantidad de espacio libre requerido para que un bloque regrese a la lista de bloques disponibles depende de pctused ).

Si ya tiene algunos datos representativos en su tabla, puede estimar la cantidad de espacio adicional que necesitará comparando el espacio físicamente utilizado ( all_tables.blocks*block_size después de haber reunido las estadísticas) con la longitud promedio de la fila.

Por cierto, Oracle puede proporcionarle fácilmente una buena estimación de la longitud promedio de la fila: recopilar estadísticas en la tabla y consultar all_tables.avg_row_len .

2) La mayoría de las veces (léase: a menos que haya un error o caiga en un uso atípico del índice), el índice crecerá proporcionalmente al número de filas.

Si tiene datos representativos, puede tener una buena estimación de su tamaño futuro multiplicando su tamaño real por el crecimiento relativo del número de filas.