lunes, 20 de junio de 2011

Tunning SQL Oracle: 4ta Sesión

7. Vistas Materializadas: Sirven para las sumariazaciones del ROLAP

OLTP vs ROLAP

OLTP
Normalidad
3Fnormal, Maestro Detalle
Estructuras complejas
Demandan Joins
Para transacciones
Insert/Update/Delete
Debilidad: Análisis y Reporting

ROLAP (para Datamart)
Denormalizada
Estrella/Snowflake
Menos Joins
Sólo lectura/Consultas
Rinde para consultas
Representa Historia
Aprovechan features de la base de datos.
Para información a nivel agregado

Idea: El Gestor debe tener su módulo de reporting en otra instancia, no en la misma instancia relacional.

Crear "sumarios", donde ya tenga todos los datos precomputados, tantos como requiera para atender las solicitudes de información.

el OLTP, el ETL y el ROLAP pueden estar en la misma instancia, pero se recomienda tenerlos en distintas, también es común tener el ETL y el ROLAP en la misma instancia.

Con ENABLE QUERY REWRITE, Oracle reescribe la consulta y va a la vista materializada en vez de ir al las tablas ROLAP.

No convienen en ambientes OLTP porque las ventajas se ven en el Rewrite al realizar consultas, escenario ideal del ROLAP.

CREATE MATERIALIZED VIEW MV_RESUMEN
ENABLE QUERY REWRITE AS
SELECT P.PROD_SUBCATEGORY,
               T.WEEK_ENDING_DAY,
               SUM(S.AMOUNT_SOLD) AS AMOUNT_SOLD
FROM SALES S, PRODUCTS P, TIMES T
WHERE S.PROD_ID = S.PROD_ID
    AND S.TIME_ID = T.TIME_ID
GROUP BY P.PROD_SUBCATEGORY, T.WEEK_ENDING_DAY


8. Dimensiones

CREATE DIMENSION PRODUCTS_DIM
   LEVEL product IS (PRODUCTS.PROD_ID)
   LEVEL subcategory IS (PRODUCTS.PROD_SUBCATEGORY)
   LEVEL category IS (PRODUCTS.PROD_CATEGORY)
HIERARCHY PROD_ROLLUP
(
PRODUCT CHILD OF
   SUBCATEGORY CHILD OF
   CATEGORY
)
ATTRIBUTE product DETERMINES products.prod_name
ATTRIBUTE product DETERMINES products.prod_desc
ATTRIBUTE subcategory DETERMINES
products.prod_subcategory_desc
ATTRIBUTE category DETERMINES products.prod_category_desc


Para actualizar una vista materializada con refresh _mode Demand, se usa el package
BEGIN
DBMS_MVIEW.REFRESH('MV_VENTA_ANUAL')
END

Se usa SELECT * FROM USER_MVIEWS para ver el diccionario de datos de las vistas materializadas que tenemos


Las Vistas Materializadas se crearon para reescrituras de los selects y se administra el modo de actualización.



9. particionamiento

cuando la tabla es muy grande, se puede reemplazar un DELETE TABLE por un ALTER TABLE TRUNCATE PARTITION

No hay comentarios:

Publicar un comentario