A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

José Antônio da cunha IFRN Administração de Banco de Dados.

Apresentações semelhantes


Apresentação em tema: "José Antônio da cunha IFRN Administração de Banco de Dados."— Transcrição da apresentação:

1 José Antônio da cunha IFRN Administração de Banco de Dados

2 Otimização e Tunning O otimizador de consultas do SQL Server, fornece soluções para o problema de como cada consulta deve ser executada (por exemplo, quais índices devem ser usados, em que ordem as tabelas devem ser acessadas, como as junções devem ser implementadas).

3 Otimização e Tunning Essas soluções são chamadas plano de execução de consultas, e a principal tarefa do otimizador é selecionar o plano ótimo.

4 Otimização e Tunning As vezes, as informações disponíveis para o otimizador não são suficientes para que ele determine o plano ótimo. Portanto, é muito importante saber como os programadores podem melhorar a eficiência de seus aplicativos. A seguir discutiremos alguns desses problemas.

5 Otimização e Tunning Junção versus Sub-consultas Correlacionadas. Cada consulta, normalmente, pode ser expressa com uma das muitas declarações SELECT equivalentes. Por exemplo, cada operação de junção pode ser expressa usando-se a sub-consulta correlacionada equivalente e vice-versa. Esses métodos diferem no sentido de que uma operação de junção é consideravelmente mais eficiente do que a sub-consulta correlacionada correspondente.

6 Otimização e Tunning Exemplo 1 Faça um comando SQL que obtenha os sobrenomes de todos os funcionários que trabalharam no projeto “p3”.

7 Otimização e Tunning Solução A SELECT emp_nome FROM empregado, trabalha_em WHERE empregado.emp_no = trabalha_em.emp_no AND projeto_no = ‘p3’

8 Otimização e Tunning Solução B SELECT emp_nome FROM empregado WHERE ‘p3’ IN (SELECT projeto_no FROM trabalha_em WHERE empregado.emp_no =trabalha_em.emp_no)

9 Otimização e Tunning Comentários: o desempenho da solução A é melhor do que o da solução B. a consulta mais interna da solução B deve ser avaliada várias vezes, pois ela possui a coluna emp_no, que pertence à tabela empregado na consulta mais externa. Observe que o valor da coluna emp_no muda sempre que o SQL Server examina uma linha diferente da tabela empregado na consulta mais externa. A junção na solução A funciona mais rapidamente, pois ela avalia todos os valores da coluna projeto_no da tabela trabalha_em apenas uma vez.

10 Otimização e Tunning Declaração Incompleta É possível um programador especificar uma declaração SQL incompleta, tal como, um produto cartesiano entre duas tabelas. O resultado de um produto cartesiano contém a combinação de linhas de duas tabelas. Por exemplo, se uma tabela contém 10.000 linhas e a outra 100, o resultado do produto cartesiano das duas tabelas será uma tabela com 1 milhão de linhas.

11 Otimização e Tunning Declaração Incompleta Como regra geral, se sua consulta está acessando n diferentes tabelas, você deve ter pelo menos n-1 condições de junção relacionadas a todas as tabelas, para evitar uma produto cartesiano.

12 Otimização e Tunning Declaração Incompleta Nota: O SQL Server oferece suporte à opção ROWCONT na declaração SET, que restringe a exibição de linhas selecionadas a um certo número. Desse modo, o uso dessa opção limita o número de linhas que pode ser criado por um produto cartesiano não-intencional.

13 Otimização e Tunning Declaração Incompleta A opção ROWCOUNT faz o sistema parar de processar uma declaração DML, depois que o número especificado de linhas for retornado. Para ativar faça  SET ROWCOUNT número de linha Para desativar faça  SET ROWCOUNT 0

14 Otimização e Tunning Declaração Incompleta A opção STATISTICS IO – faz o sistema apresentar informações estatísticas sobre a quantidade de atividade de disco gerada pela consulta; por exemplo, o número de operações de E/S de leitura e gravação processadas com a consulta. A opção STATISTICS TIME – faz o sistema apresentar o processamento, a otimização e o tempo de execução da consulta.

15 Otimização e Tunning Operador LIKE O operador LIKE compara os valores de uma coluna com um padrão especificado. Se essa coluna estiver associada a um índice, a pesquisa da string de caracteres será executada com o índice existente. Uma condição baseada em curinga na posição inicial obriga o SQL Server a examinar cada valor na coluna; isto é, o índice existente não serve para nada. O motivo é que os índices trabalham determinando rapidamente se o valor solicitado é maior ou menor do que os valores em vários nós da B-TREE. Se os caracteres iniciais dos valores desejados não forem especificado, então essas comparações não poderão ser feitas.

16 Otimização e Tunning Exemplo 2 Obtenha os números de funcionários de todos os empregados cujos sobrenomes terminam com “es”. Solução SELECT emp_no FROM empregado WHERE emp_nome LIKE ‘%es’

17 Otimização e Tunning Comentários: Não é possível processar a consulta, mesmo que o índice da coluna emp_nome exista. A razão é que os caracteres do início dos valores de dados não são conhecidos dentro da condição de busca na cláusula WHERE.

18 Otimização e Tunning Declarações T_SQL e Desempenho de Consultas O SQL Server oferece suporte a duas declarações que permitem a otimização de consultas: 1.UPDATE STATISTICS 2.SET

19 Otimização e Tunning As estatísticas nas tabelas de sistemas não são constantemente atualizadas. A declaração UPDATE STATISTICS atualiza as informações sobre a distribuição de valores de chaves nos índices especificados. A modificação das informações com a declaração UPDATE STATISTICS deve ser processada nos seguintes casos: Após o carregamento inicial dos dados. Após a execução de uma declaração DML (INSERT, UPDATE ou DELETE) que afete um grande número de linhas.

20 Otimização e Tunning A segunda declaração SET, tem várias opções. Algumas dessas são usadas para otimização de consultas e algumas para outros propósitos.

21 Otimização e Tunning As seguintes opções são usadas para otimização de consultas: 1. SHOWPLAN_TEXT 2. SHOWPLAN_ALL 3. NOEXEC 4. FORCEPLAN 5. ROWCOUNT 6. STATISTICS IO 7. STATISTICS TIME ON – Ativa e OFF - Desativa

22 Otimização e Tunning SHOWPLAN-TEXT e SHOWPLAN_ALL – apresentam o plano de execução para a consulta. A opção SHOWPLAN_ALL – exibe as mesmas informações detalhadas sobre o plano de execução para a consulta que SHOWPLAN_TEXT, com a adição de uma estimativa dos requisitos de recursos para essa declaração.

23 Otimização e Tunning SET SHOWPLAN_TEXT ON GO Select empregado.dept_no FROM empregado, trabalha_em WHERE empregado.emp_no = trabalha_em.emp_no AND trabalha_em.projeto_no = ‘p1’

24 Otimização e Tunning

25 30/5/2016 José Antônio 25 O resultado mostra o plano de execução selecionado para a declaração SELECT especificada. As colunas de junção nas tabelas empregado e trabalha_em são indexadas; portanto, o otimizador de consultas escolhe o método de loop aninhado para executar a operação de junção.

26 Otimização e Tunning FORCEPLAN – torna possível que você influencie diretamente uma otimização de consulta. Usar essa opção faz o SQL Server acessar as tabelas na mesma ordem em que elas estão listadas na cláusula FROM da declaração SELECT.

27 Otimização e Tunning SET FORCEPLAN ON GO Select empregado.dept_no FROM empregado, trabalha_em WHERE empregado.emp_no = trabalha_em.emp_no AND trabalha_em.projeto_no = 'p1'

28 Otimização e Tunning O SQL Server oferece três diferentes técnicas de processamento de junção: 1. Junção de loop aninhado; 2. Junção de mesclagem; 3. Junção com hashing.

29 Otimização e Tunning Junção de Loop Aninhado A junção de loop aninhado é a única técnica de processamento suportada nas versões anteriores do SQL Server. A junção de loop aninhado funciona pela “força bruta” em outras palavras, para cada linha da tabela exterior, cada linha da tabela interior é recuperada e comparada.

30 Otimização e Tunning Algoritmo ( A e B são duas tabelas temporárias ) For cada linha na tabela externa do: ler a linha em A para cada linha na tabela interna do: ler a linha em B if A.coluna_junção = B.coluna_junção then aceite a linha e a inclui no conjunto resultante end if end for End for

31 Otimização e Tunning A junção de loop aninhado será muito lenta se não houver índices para uma das colunas de junção. Sem índices, o SQL Server teria de percorrer a tabela externa uma vez e a tabela interna n vezes, o n é o número de linhas da tabela externa. Portanto, o otimizador de consultas escolhe esse método apenas se a coluna de junção da tabela interna estiver indexada; assim, a tabela interna não precisa ser percorrida para cada linha da tabela externa.

32 Otimização e Tunning Junção de Mesclagem A junção de mesclagem fornece uma alternativa de custo efetivo à construção de um índice para uma junção de loop aninhado. As linhas das tabelas unidas devem ser fisicamente classificadas usando-se os valores da coluna de junção. As duas tabelas são então percorridas na ordem das colunas de junção, fazendo corresponder as linhas com mesmo valor para as colunas de junção. Nota: nenhum índice é exigido quando o otimizador de consultas executa uma junção de mesclagem.

33 Otimização e Tunning Algoritmo a)Classifica a tabela externa em ordem ascendente usando a coluna de junção. b)Classifica a tabela interna em ordem ascendente usando a coluna de junção Para cada linha na tabela externa faça: ler a linha em A para cada linha a partir da tabela interna com um valor menor ou igual a coluna de junção faça: ler a linha em B if A.coluna_junção = B.coluna_junção then aceite a linha e a inclui no conjunto resultante end if fim para Fim Para

34 Otimização e Tunning Junção com Hashing Uma junção com hashing é usada quando não há entrada classificada. As linhas das duas tabelas são redeclaradas no mesmo arquivo de hash, usando a mesma função de hashing nas colunas de junção que as chaves com hashing. O método de junção com hashing não exige índice. Portanto, esse método é altamente aplicável para consultas ad hoc (em que não podem ser esperados índices).

35 Otimização e Tunning Nota: A otimização de aplicativos de dados é um dos fatores mais importantes que afetam o desempenho. Modificando as propriedades existentes de uma consulta, você pode melhorar significativamente seu desempenho. O otimizador de consultas é a parte do SQL Server que decide como melhor executar uma consulta. Ele gera vários planos de execução para determinada consulta e seleciona o plano de menor custo.


Carregar ppt "José Antônio da cunha IFRN Administração de Banco de Dados."

Apresentações semelhantes


Anúncios Google