Ajuste del rendimiento de consultas de base de datos relacional

Muchos clientes experimentan incidencias de rendimiento con las aplicaciones de almacén de datos, por ello incluimos a continuación algunas directrices generales sobre cómo puede analizar y mejorar el rendimiento de un informe en Oracle Analytics. En algunos casos, las consultas SQL generadas en Oracle Analytics son complejas de analizar. En este tema se describe cómo analizar y minimizar incidencias de rendimiento que se podrían originar en las consultas SQL generadas en Oracle Analytics.

En este tema no se tratan las incidencias de rendimiento causadas por problemas con la red, el explorador o la presentación de informes.

Analice el log de consultas de Oracle Analytics (se requiere el nivel de log 3)

Para obtener información sobre cómo buscar este log o comprender el contenido, consulte Recopile y analice los logs de consultas.

  1. Compare la cantidad de tiempo que emplea la consulta en Oracle Analytics con el tiempo que emplea en la base de datos, es decir, el tiempo de respuesta con la duración de la consulta física. Normalmente, el tiempo que emplea en Oracle Analytics no es superior a unos pocos segundos.
  2. Si el tiempo de respuesta es superior a unos pocos segundos, analice los pasos individuales realizados en Oracle Analytics para encontrar la causa (se requiere el nivel de log 5).

Analice el SQL físico

  1. Compruebe si son necesarias todas las tablas incluidas en la consulta. Busque tablas que estén unidas pero no incluidas en la cláusula SELECT y no aplique ningún filtro (filtros reales, no condiciones de unión).
  2. Identifique cuántas consultas físicas y subconsultas se generan. Más concretamente, cuántas veces lee la consulta una tabla de hechos. Lo ideal es que la consulta lea una única tabla de hechos una sola vez. Cuando hay más de una tabla de hechos, averigüe el motivo y compruebe si puede eliminar alguna.
  3. Compruebe las columnas excluidas, las reglas de agregación no aditivas(REPORT_AGGREGATE, count(distinct)...), los pasos de selección, la subconsulta en el informe, los operadores definidos (UNION), los totales, los subtotales, las vistas múltiples, etc.
  4. Compruebe las uniones externas. Descubra dónde se originan y si puede eliminar algunas cambiando el diseño.

Analice el plan de ejecución

Si la optimización del SQL no es suficiente, analice el plan de ejecución para buscar la causa raíz de la incidencia de rendimiento. Solicite ayuda al DBA. Existen cuatro modos principales de mejorar el rendimiento en este punto:
  1. Reduzca el volumen de las E/S mejorando las rutas de acceso a datos (índices).
  2. Reduzca el volumen de las E/S reduciendo el volumen de lectura de datos. Por ejemplo, puede revisar los filtros aplicados o la estructura del modelo de datos (consulte la siguiente sección).
  3. Aumente el paralelismo (el número de threads utilizados para leer tablas grandes).
  4. Mejore la velocidad de E/S (mejoras en la infraestructura, base de datos en memoria, etc.).

Revise y mejore el modelo de datos para reducir el volumen de lectura de datos

  1. Cree tablas de agregados.
  2. Utilice la fragmentación.

    Por ejemplo, si los usuarios seleccionan principalmente datos del Año, Trimestre o Mes actual, podría dividir el hecho en dos tablas: actual y de archivo En la base de datos Oracle, también puede utilizar la partición.

  3. Utilice la desnormalización (para reducir el número de uniones).
  4. Divida las tablas para reducir el número de columnas.

    El volumen de lectura de datos no depende solo del número de filas de cada tabla. El volumen de la tabla también depende del número y el tamaño de sus columnas. Por ejemplo, puede dividir una tabla grande de 500 columnas en dos tablas; una tabla con las 50 columnas que se utilizan con más frecuencia y la otra con las 450 columnas restantes que casi nunca se utilizan.

Muchas incidencias de rendimiento de Oracle Analytics tienen su origen en un diseño deficiente, ya que esto provoca que se generen consultas SQL que no son óptimas. Mediante la modificación del diseño, puede mejorar las consultas SQL que genera Oracle Analytics. Esto puede tener un enorme impacto no solo en el rendimiento de los informes, sino también en la cantidad de recursos que se utilizan en la base de datos.