Uso de índices en un data warehouse

28 08 2007

mapa

Varias veces me ha pasado que al visitar un data warehouse me encuentro con que en las tablas hay cero índices. Tengo muy presente unos cubos que se tardaban 2 días en procesarse.

El uso de índices es uno de las cosas que más afecta el performance o desempeño. Debería ser obligado que todo data warehouse tenga los apropiados.

Para los que se preguntan ¿que es un índice? Una sencilla respuesta sería hacer una comparación. Para encontrar donde está ubicado un cliente que tengo que visitar tengo 2 opciones: buscar la dirección en un mapa o lanzarme a ciegas. Si me lanzo a ciegas tengo que recorrer calle por calle, preguntar e ir contando número por numero hasta dar con la dirección. Los 2 sabemos que éste último método es pésimo.

De 10 veces solo una vez encontré la dirección a la primera y eso que tuve mucha suerte.

Los índices son los mismo. Son un mapa de la información. Si no hay mapa entonces la base de datos recorre uno por uno los registros para dar con ellos. Un síntoma de que ocurre esto es que al pararse enfrente del servidor las lucecitas están prendidas y no se detienen.

Aparte de que el % de uso del procesador es elevado.

Si usted es de esos usuarios avanzados sabrá que se puede monitorear la cantidad de accesos a disco y que el resultado dice que están arriba de lo normal.

Algunas recomendaciones para usted y su data warehouse respecto a los índices:

  • indexar las primary keys de las tablas. Si, a veces hay primary keys y no hay índices. Sobre todo en los motores de bases de datos viejitos que no tenían tanta integridad.
  • Evitar usar campos llaves que no sean numéricos. Prefiera los campos enteros para las llaves. Eso hará que los índices se eficienten mucho y respondan de manera más rápida. Además esto le permitirá definir índices de tipo bitmap que funcionan hiper-eficientemente por no decir “hechos la @#&%!”. Conozco una base de dato que cada índice mide el 25% de lo que mide la tabla. Con 2 o 3 índices ya nos acabamos el disco duro. Todo por que las llaves son varchar.
  • Indexar aquellas columnas por las que hará búsquedas frecuentemente.
  • Si tiene tiempo, paciencia y recursos pruebe lo que dice el manual de almacenar los índices en un archivo o disco diferente al de datos. Se sorprenderá al ver los tiempos de respuesta. Si todavía tiene paciencia entonces pruebe todo el concepto (datos, temporales, base de datos de sistema, indices y logs). Si tiene una base de datos gigantesta, los tiempos de respuesta están lentos y aún no ha probado esto…no entiendo como ha sobrevivido.
  • Lea los manuales y trate de entender los diferentes tipos de índices que su base de datos tiene, las desventajas y ventajas que tiene cada uno de ellos. El costo y los beneficios que le puede traer.
  • Si tiene Oracle el uso del paralelismo le puede traer muchos beneficios, investigue.
  • En algunas bases de datos los índices también se pueden particionar. Esto aplica para data warehouses gigantescos.
  • Un data warehouse está diseñado para consultas así que es perfectamente válido que esté sobre-indexado, pero no exagere.
  • Monitoree las consultas que se lanzan sobre la base de datos y verifique que usen índices. Si no usan índices investigue por qué. A lo mejor simple y sencillamente no tiene.
  • Pregunte qué están haciendo en otras empresas respecto a este tema y no tenga temor de contratar alguien que le apoye con este tema.

¿Ahora entiende por qué aquellos cubos que mencioné se tardaban 2 días en procesarse? Había cero índices.

Advertisement

Acciones

Información

3 respuestas

17 09 2008
andres

gracias por la aclaracion y dar una breve informacion sobre los indices en bases de datos

12 04 2010
adonay

hola buenos dias, tengo una dudas con respecto a que tipo de indice se debe de usar en un DWH (clustered, nonclustered o cual me puedes proponer)?, e estado checando bastante documentacion pero no me queda claro como definir el tipo de indice a usarse en un DWH.

12 04 2010
Adrian Ceballos Diossabot

Creo que clustered te conviene mas dado que la información quedará ordenada haciendo mas rápido el acceso no así la escritura (pero para eso estan las noches) De la sintaxis depende de l base de datos

saludos

Deja un comentario

Fill in your details below or click an icon to log in:

Gravatar
Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Seguir

Get every new post delivered to your Inbox.