Ajustar Desempenho de Consultas ao Banco de Dados Relacional

Muitos clientes enfrentam problemas de desempenho com aplicativos de data warehouse. Em alguns casos, as consultas SQL geradas pelo Oracle Analytics são complexas de analisar. Este tópico fornece algumas diretrizes sobre como analisar e minimizar problemas de desempenho que podem ser originados das consultas SQL geradas pelo Oracle Analytics.

Este tópico não abrange questões de desempenho causadas por problemas com sua rede, browser ou apresentação de relatório.

Analisar o Log de Consulta para o Oracle Analytics (Nível de Log 3 Necessário)

Para obter informações sobre como localizar este log ou entender o conteúdo, consulte Reunir e Analisar Logs de Consulta.

  1. Compare o tempo gasto pela sua consulta no Oracle Analytics com o tempo gasto no banco de dados, ou seja, tempo de resposta versus duração da consulta física. Normalmente, o tempo gasto no Oracle Analytics não excede alguns segundos.
  2. Se o tempo de resposta for maior do que alguns segundos, analise as etapas individuais realizadas no Oracle Analytics para localizar a causa (nível de log 5 necessário).

Analisar a Consulta de SQL Física

  1. Verifique se todas as tabelas incluídas na consulta são necessárias. Procure por tabelas que estejam unidas, mas não incluídas na cláusula SELECT e não tenham filtros aplicados (filtros reais, não condições de junção).
  2. Identifique quantas consultas e subconsultas físicas são geradas. Mais precisamente, quantas vezes a consulta leu uma tabela de fatos? Em um mundo ideal, a consulta lê uma única tabela de fatos apenas uma vez. Quando houver mais de uma tabela de fatos, descubra por quê e veja se você pode remover algumas.
  3. Verifique colunas excluídas, regras de agregação não aditivas (REPORT_AGGREGATE, count(distinct)...), etapas de seleção, uma subconsulta no relatório, operadores definidos (UNION), totais, subtotais, múltiplas views etc.
  4. Verifique se há alguma junção externa. Descubra de onde se originam e se você pode remover algumas alterando o design.

Analisar o Plano de Execução

Se a otimização da consulta SQL não for suficiente, analise o plano de execução para localizar a causa raiz do seu problema de desempenho. Peça ajuda ao seu administrador de banco de dados (DBA). Há quatro maneiras principais de melhorar o desempenho neste ponto:
  1. Reduza o volume de chamadas de entrada e saída melhorando os caminhos de acesso aos dados (índices).
  2. Reduza o volume de chamadas de entrada e saída reduzindo o volume de dados lidos. Por exemplo, você pode analisar os filtros aplicados ou a estrutura do modelo de dados (veja a próxima seção).
  3. Aumente o paralelismo (número de threads usados para ler tabelas grandes).
  4. Aumente a velocidade de chamadas de entrada e saída (melhorias de infraestrutura, banco de dados na memória etc.).

Analisar e Aperfeiçoar o Modelo de Dados para Reduzir o Volume de Dados Lidos

  1. Crie tabelas agregadas.
  2. Use fragmentação.

    Por exemplo, se os usuários em sua maioria selecionarem dados do Ano, Trimestre ou Mês corrente, você pode dividir o fato em duas tabelas: atual e arquivado. No banco de dados Oracle, você também pode usar particionamento.

  3. Use desnormalização para reduzir o número de junções.
  4. Divida tabelas para reduzir o número de colunas.

    O volume de dados lidos não depende apenas do número de linhas em cada tabela. O volume da tabela depende também do número e do tamanho de suas colunas. Por exemplo, você pode dividir em duas uma tabela grande com 500 colunas; uma tabela com as 50 colunas usadas com mais frequência e a outra com as 450 colunas restantes que são raramente usadas.

Muitos problemas de desempenho no Oracle Analytics se originam de um design ruim, pois isso causa a geração de consultas SQL abaixo do ideal. Modificando o design, você pode melhorar as consultas SQL geradas pelo Oracle Analytics. Isso pode ter um grande impacto, não apenas no desempenho dos seus relatórios, mas também no volume de recursos usados no banco de dados.