Como modificar um plano de execução sem alterar a instrução SQL?

SQL Profile

Quando estamos realizando um trabalho de tuning SQL muitas vezes nos deparamos com situações em que não podemos alterar o código da aplicação pois esta pertence a terceiros. Essa limitação pode ser superada facilmente utilizando o recurso SQL PROFILE do banco Oracle, disponível a partir da versão 10g. Neste artigo vamos fazer uma demonstração de uma situação hipotética onde vamos utilizar

» Read more

Por que o operador NOT EQUAL prejudica performance?

Operator Not Equal

As instruções SQL que utilizam NOT EQUAL na cláusula WHERE em base de dados Oracle não utilizam índice no plano de execução para acessar as linhas da tabela, em algumas situações essa limitação do Otimizador pode prejudicar o desempenho das instruções SQL. Nesse artigo vamos entender porque essa limitação existe e verificar quais alternativas podemos utilizar em nossa instrução SQL

» Read more

Uma ferramenta que facilita a leitura do plano de execução

Execution plan order

Alguns aspectos na leitura do plano de execução não são tão simples e requerem um pouco de prática, um desses aspectos é determinar em que ordem as operações são executadas, já publicamos um artigo que orienta como identificar essa ordem, agora vamos realizar alguns testes com um script (autor: Adrian Billington) que mostra o plano de execução no mesmo formato

» Read more

Como pode um plano de execução mudar quando não há alterações no banco?

estatísticas

Como pode um plano de execução de mudar de repente, quando ninguém fez qualquer alteração no banco de dados? Por nenhuma mudança, queremos dizer que não houve alterações na estrutura das tabelas, não foram adicionados ou alterados índices, nenhuma mudança relativa a “Bind Peeking”, sem mudanças de parâmetros do banco, não houve aplicação novos patches ou upgrades, não houve criação

» Read more

SQL Profile: uma poderosa aliada no processo de Tuning

sql_profile

Quantas vezes você encontrou uma consulta usando um índice X quando você queria que ela usasse o índice Y, ou uma consulta realizando “Nested loop” para fazer um “join” entre duas tabelas quando um “Hash Join” realizaria esse trabalho muito mais rápido. Ou uma instância em que a aplicação de repente começa a utilizar um plano de execução ineficiente após

» Read more

9 Ferramentas de Tuning grátis que você deve conhecer

Tuning Tools

O processo de Tuning de instruções SQL não é uma tarefa fácil, existem ótimas ferramentas para auxiliar nesse trabalho, aquelas que requerem investimento normalmente não estão a nossa disposição nos ambientes onde trabalhamos. Neste artigo vamos listar 10 ferramentas de uso gratuito que podem ser baixadas e utilizadas sem custo, não realizamos nenhum tipo de avaliação apenas vamos descrever sua

» Read more

Plano de execução ruim? Turbine o Otimizador.

Estatísticas dinâmicas

A “Feature Dynamic Sampling” foi disponibilizada a partir da versão Oracle 9iR2. O equívoco mais comum é que ela pode ser utilizada para substituir as estatísticas coletadas pelo pacote DBMS_STATS. O objetivo dela é dar mais opções estatísticas ao otimizador, ela é usada quando as estatísticas regulares não são suficientes para obter estimativas de cardinalidade de boa qualidade.   Durante

» Read more

Quando usar os Function-Based Indexes?

Function-Based Indexes

Um dos problemas mais comuns encontrados num processo de tuning de instruções SQL são as operações FULL TABLE SCAN que muitas vezes são escolhidas pelo Otimizador por falta de opção já que não consegue utilizar um índice de uma determinada coluna pois o programador incluiu na cláusula WHERE uma função para essa coluna. A partir da versão Oracle 8i foi introduzido

» Read more

SESSION_CACHED_CURSORS: Será que você realmente conhece a importância desse parâmetro?

session cursor cached

Existe muita confusão com relação a definição dos parâmetros OPEN_CURSORS e SESSION_CACHED_CURSORS, o entendimento da função de cada um deles é fundamental para o ajuste de desempenho da instância Oracle. Nesse post vamos abordar o papel de cada um desses parâmetros e como eles influenciam o desempenho das instruções SQL, vamos ver num arquivo trace 10046 o parâmetro SESSION_CACHED_CURSORS em

» Read more

Qual a importância das estatísticas de colunas para o Otimizador?

Column statistics

O Otimizador baseado em custo (CBO) utiliza estatísticas para determinar o custo dos diversos planos de execução que ele produz para uma determinada instrução SQL e escolhe o plano com o menor custo para utilizar, portanto as informações estatísticas são cruciais na escolha do plano de execução e devem fornecer informações precisas e atualizadas para que o Otimizador consiga realizar

» Read more
1 2 3 4 5