DBMS_SPACE.CREATE_INDEX_COST
Necesitamos dimensionar el espacio disponible para crear índices. Muchas veces, se detectan ciertas consultas SQL requieren de ellos para obtener un mejor desempeño. Para esto revisamos si el espacio del tablespace definido para índices posee los recursos necesarios.
Opcionalmente, podemos ejecutar estadísticas sobre la tabla para determinar de forma exacta cuantas filas tiene la tabla:
exec dbms_stats.gather_table_stats(user,'TABLA');
Conectarse con el usuario SYS y ejecutar el siguiente bloque de PL/SQL:
set serverout on
declare
calc_used_bytes NUMBER;
calc_alloc_bytes NUMBER;
begin
DBMS_SPACE.CREATE_INDEX_COST (
ddl => 'create index NOMBRE_INDICE on OWNER.TABLA '||'(campo1,campo2, etc)',
used_bytes => calc_used_bytes,
alloc_bytes => calc_alloc_bytes
);
DBMS_OUTPUT.PUT_LINE('Used bytes = '||calc_used_bytes/1024/1024);
DBMS_OUTPUT.PUT_LINE('Allocated bytes = '||calc_alloc_bytes/1024/1024);
end;
/
Donde las variables de tipo number las definimos con el siguiente nombre:
calc_used_bytes :> Esta variable permite dar una estimación de la cantidad de espacio que se requiere para los datos del índice.
calc_alloc_bytes :> Esta variable proporciona una estimación de cuanto espacio será asignado dentro del Tablespace.
El resultado indica que la cantidad estimada de bytes asignados se encuentra en el cálculo aproximado de la cantidad de espacio consumida realmente.
Used bytes = 573,61937713623046875
Allocated bytes = 1152 -> cálculo en MB del espacio consumido en el tablespace.
En resumen, los resultados pueden ir variando dependiendo del número de registros, número de columnas, tipos de datos y la precisión de las estadísticas.
No comments:
Post a Comment