inteligencia de negocios buenos aires, mayo de 2009 u.t.n. – f.r.b.a. prof: ing. pablo cigliuti...

14
Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael

Upload: hieronimo-espinal

Post on 23-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Inteligencia de Negocios

Buenos Aires, mayo de 2009

U.T.N. – F.R.B.A.

Prof: Ing. Pablo CigliutiAyud: Ing. Rafael Rizzo

Page 2: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Clase IV DW Tunning

Page 3: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Consideraciones I/O

DW altamente comprometido con operaciones de I/O.

OLTP dependerá de los patrones de acceso y de la carga de trabajo del usuario. Problemas con I/O -> I/O Bound o I/O bottleneck.

Para resolver problemas de I/O por lo general se usan RAID (Redundant Arrays of Inexpensive Disks)

Para resolver cuellos de botella de I/O cuando hay procesamiento en paralelo o acceso de consultas concurrentes se debería usar Striping.

Page 4: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Striping Divide los datos de grandes tablas en pequeñas porciones y los guarda en diferentes datafiles de diferentes discos.

RAID 0 RAID 1 RAID 0+1

Está relacionada con el HW. No tiene anda que ver con la base de datos. Puedo hacer striping de objetos en diferentes discos para conseguir distintos objetivos:

Optimizar full table scan -> Separar una tabla en diferentes discos Puedo optimizar disponibilidad -> Restringir el tablespace a algunos discos Para optimizar el scan de particiones -> Poner cada partición en varios discos.

Page 5: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Ejecución en paralelo Separar una tarea en varias:

En vez de que un sólo proceso resuelva todo un query, varios procesos resuelven el mismo query al mismo tiempo.

Ej. Normal: Para una tabla de un año de ventas, un proceso lee toda la tabla.

Ej. Paralelo: La tabla es manejada por 4 procesos y cada uno de ellos lee un trimestre.

Reduce drásticamente el tiempo de respuesta de un query (muy usado en los DSS y DW).

Es útil para operaciones que acceden a grandes volúmenes de datos, por ej:

Table scan y joins grandes. Creación de grandes índices. Scan de índices particionados. Bulk inserts, updates y deletes.

Page 6: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Particiones

Ayuda a manejar el problema de grandes volúmenes de datos, ya que lo descompone en piezas más chicas.

¿Con que granularidad particiono? El punto a tener en cuenta es la administración de esas particiones.

Ej: Si guardo 4 años, y voy borrando siempre el último mes. No va a ser lo mismo si lo tengo particionado por trimestre, donde accedo a una partición que sólo contiene 3 meses.

Data segment compression: Ahorra espacio. Debería aplicarse sobre tablas particionadas.

Se pueden comprimir particiones: reduce disco y memoria

Page 7: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Tipo de Particiones

Range Partitions: Crea las particiones basadas en rangos de valores de claves de particiones que uno establece para cada partición. Ej, tiempo. Conveniente para particionar datos históricos. Los boundaries de las particiones definiran el orden de la tabla e indices

Hash Partitioning: Utiliza algoritmo de hash distribuyendo registro en diferentes particiones aproximadamente del mismo tamaño. Es un método ideal cuando tengo datos distribuidos en diferentes discos, o cuando no tengo un rango o una columna obvia por la que puedo particionar.

List Partitioning: permite crear una partición indicando valores discretos. Me permite particionar datos que no tienen un orden en valores naturales

Index Partitioning: Puedo elegir si los indices heredan o no las particiones que le hice a las tablas.

Page 8: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Tipo de Particiones

PRUNING PARTITION: El optimizador analiza los from y los where que se usan en el select y excluye las particiones que no se necesitan.Reduce sustancialmente la cantidad de datos que va a buscar al disco.

WISE JOINS: Reduce la cantidad de información intercambiada entre servidores de ejecución cuando el query se ejecuta en paralelo.

Page 9: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Indices

Bitmap Index Reduce el tiempo de respuesta para queries ad hoc Reduce el espacio de almacenamiento. Logra mas performance incluso con pocos procesadores y memoria. Son usados para DW donde solo se consulta, no son sustentables para OLTPBuenos para columnas con poco grado de cardinalidad (masculino - femenino) distinct values / cant de regs. La mayoría tendrian que ser bitmap

B-Tree B-tree Index: usados para columnas con valores unicos , o de alta cardinalidad.

Page 10: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Vistas materializadas

Precalcula joins Agregaciones

Page 11: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Agregaciones

Es la mejor forma de mejorar performance en grandes dw. Se puede realizar en todo tipo de dw.

“Sumarizar y guardar datos que existen en la fact table con el objetivo de mejorar de las consultas de los usuarios finales”

GOALS AND RISK Mejorar performance drásticamente para la mayor cantidad de queries de usuarios diferentesAgregar sólo una cantidad aceptable de almacenamiento extra en el dw. Impactar el costo de extracción lo menos posible. Impactar lo menos posible las tareas del dba.

Page 12: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Acercamientos Agregaciones

No agregar Tan pocos datos en la fact que hay buena performance y no es necesario agregar.

Agregación exaustiva Voy a agregar todas las agregaciones posibles. Los queries van a ser muy rápidos, pero voy a complicar la admin del dba, y a aumentar mucho el tiempo de carga y espacio en disco.

Agregación selectiva

La cantidad de agregaciones que puedo crear es el número de niveles en cada jerarquía de cada dimensión, multiplicadas entre si

Las tablas agregadas se cargan luego de la carga de la fact y de su verificación.

Page 13: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Que agregar 2 piezas básicas de informacion:

Uso y análisis de patrones de informaciónEl primero tiene que ver con el uso de patrones de datos. Los niveles examinados mas frecuentes por el usuario, serán buenos candidatos para agregaciones.

Reducción de lineas de la tabla baseEn este punto hay que considerar el volumen de los datos en la fact y la distribucion de los datos Luego de cargar datos, ejecutar algunos queries para obtener el numero de lineas a diferentes niveles de la jerarquia.Esto nos dira donde decrece el volumen de datos en una sola jerarquia. Las tablas a elegir seran aquellas que decrecen mucho de un nivel a otro de la jerarquia.Tenemos que buscar donde la interseccion de las dimensiones tiene decrecimiento importante

Page 14: Inteligencia de Negocios Buenos Aires, mayo de 2009 U.T.N. – F.R.B.A. Prof: Ing. Pablo Cigliuti Ayud: Ing. Rafael Rizzo

Creación Hay varios factores que nos ayudaran a la creación:

El tamaño de la tabla fact. El numero de agregaciones que se creen. Relacionado con el tamaño de la fact y la ventana de tiempo. Capacidades de paralelismo. Muy importante para llegar a tiempo. Y nocrear cuellos de botella. Actualizar o dropear y crear. Un thread o varios

Metodos para agregarCascada... Voy de agregación en agregación

Es rápido Si tengo una falla en la primer agregacion, entonces me quedo sin las otras Propagacion de errores