OTIMIZAÇÃO E PROCESSAMENTO DE CONSULTAS

 

O Processamento e a Otimizaçã de Consultas são componentes fundamentais de um Sistema de Gerenciamento de Banco de Dados Relacionais (SGBDR). Esses processos são responsáveis por garantir que as consultas feitas aos bancos de dados sejam processadas da maneira mais eficiente possível. Neste contexto, uma "consulta" é uma pergunta feita ao banco de dados, geralmente realizada em SQL, que busca informações armazenadas em uma ou mais tabelas.


Exemplo Ilustrativo


Para ilustrar esse conceito, pense em um grande supermercado com uma variedade incrível de produtos. Suponha que você é um cliente procurando por um tipo específico de cereal. Você poderia, teoricamente, andar por todos os corredores do supermercado até encontrar o que está procurando. No entanto, isso seria muito ineficiente.

mercado  

O método mais eficaz seria perguntar a um funcionário onde o cereal está localizado. O funcionário, que tem um conhecimento profundo da disposição do supermercado, pode direcioná-lo ao corredor correto, reduzindo significativamente o tempo de busca.

Atendente de mercado  

Neste cenário, você é o usuário do banco de dados, a pergunta sobre o cereal é sua consulta SQL, o supermercado é o banco de dados, e o funcionário é o otimizador de consultas do SGBDR.



Processamento de Consultas

O processamento de consultas é a série de etapas que o SGBDR realiza para traduzir uma consulta SQL em uma série de operações de baixo nível que acessam, manipulam e recuperam os dados solicitados. As etapas do processamento de consulta são as seguintes:

  1. Análise da Consulta: Aqui, o analisador de consultas verifica a sintaxe e a sem?ntica da consulta para garantir que ela esteja correta e possa ser entendida pelo SGBDR.
  2. Otimização da Consulta: Nesta fase, o otimizador de consultas determina o plano de execução mais eficiente para a consulta, levando em consideração vários fatores, como índices, estatísticas de dados, etc.
  3. Execução da Consulta: Aqui, o plano de execução é executado e os dados solicitados são recuperados e devolvidos ao usuário.

As consultas possuem um custo que são determinados principalmente pelo acesso a disco mas também outros fatores. Existem muitas estratégias possíveis para processar uma consulta, ainda mais se esta for complexa.

A depender da qualidade da estratégia, ela pode gerar um baixo ou um alto nível de acesso a disco. Quanto menor o nível de acesso a disco melhor é a consulta. Nesse sentido, uma boa estratégia gera um baixo nível de acesso a disco. Em contrapartida, uma má estratégia gera um alto nível de acesso a disco.

Estrategia de otimizacao  

Diante disso é vantajoso para o sistema gastar uma pequena quantia de tempo e esforço para selecionar uma Boa estratégia para processar uma consulta.


Passos Básicos Do Processamento

São passos básicos:

  1. Análise sintática e tradução
  2. Otimização
  3. Plano de execução
  4. Avaliação
Passos para processamento  

É relativamente fácil, baseado na especificação da consulta, um otimizador gerar uma variedade de planos equivalentes de execução para cada consulta. Dentre os planos equivalentes gerados é escolhido o menos oneroso ao sistema.


Otimização de Consultas


O objetivo da otimização de consultas é encontrar o plano de execução mais eficiente para uma consulta SQL, para que ela possa ser executada no menor tempo possível. Para fazer isso, o otimizador de consultas avalia diferentes planos e escolhe aquele com o menor custo. Os principais conceitos da otimização de consultas incluem:

  1. Estimativas e Medidas de Custo
  2. Regra de Equivalência
  3. Otimização Heurística

Abaixo iremos explicar melhor cada um destes conceitos.


Estimativas E Medidas de Custo


A otimização de consultas envolve estimar o "custo" de diferentes planos de execução. Este custo é uma medida de quão eficiente um plano é em termos de recursos do sistema, como tempo de CPU, acesso de disco e uso de memória. O otimizador de consultas usa estatísticas de dados, como a distribuição de valores em colunas e o número de linhas em tabelas, para fazer essas estimativas.


Operação de Seleção


Uma operação de seleção é um tipo de operação que o SGBDR pode realizar ao executar uma consulta. Ela envolve a filtragem de linhas em uma tabela com base em alguma condição. Por exemplo, a consulta `SELECT * FROM Tabela WHERE idade > 18` envolveria uma operação de seleção na coluna "idade".


Regra de Equivalência


Essa é uma regra usada pelo otimizador de consultas que diz que diferentes planos de execução que produzem o mesmo resultado são "equivalentes". Isso permite que o otimizador de consultas avalie e escolha entre diferentes planos que são funcionalmente o mesmo, mas que podem ter diferentes custos.


Otimização Heurística


A otimização heurística é um método de otimização de consultas que usa regras de bom senso para escolher um bom plano de execução. Por exemplo, uma regra heurística comum é "realizar seleções e projeções o mais cedo possível" para reduzir o tamanho dos dados que precisam ser manipulados nas etapas subsequentes.

Não é incomum que as otimizações baseadas em custo cheguem a ser, elas mesmas custosas. Mesmo que seja possível chegar a uma otimização o seu custo se torna uma desvantagem para essa abordagem. Por isso a otimização Heurística pode ser usado para resolver problemas de otimização complexos, nos quais não é possível encontrar uma solução ótima de forma viável em um tempo razoável.


Plano de Execução


Um plano de execução é uma sequência de operações que o SGBDR realizará para executar uma consulta SQL. O plano de execução inclui detalhes como quais índices usar, como realizar junções e em que ordem de execução, quais operações de seleção realizar e como ordenar os resultados. Um bom plano de execução é aquele que permite que o SGBDR execute a consulta da maneira mais eficiente possível , minimizando o uso de recursos do sistema.


Exemplos de Aplicação


  1. E-commerce: Suponha que um site de comércio eletr?nico tenha milhões de produtos em seu banco de dados. Quando um usuário pesquisa um produto, a consulta SQL correspondente precisa ser processada e otimizada para retornar os resultados o mais rápido possível. A otimização eficiente pode melhorar a experiência do usuário e aumentar as vendas.
  2. Serviços de Streaming: Plataformas como Netflix ou Spotify possuem grandes bancos de dados contendo informações sobre filmes, séries, músicas e preferências do usuário. Quando um usuário busca por um filme ou uma playlist, o sistema de banco de dados deve processar e otimizar a consulta para fornecer recomendações relevantes de maneira rápida e precisa.

O processamento e a otimização de consultas são processos cruciais nos SGBDRs para garantir um desempenho rápido e eficiente. Sem eles, os usuários poderiam experimentar tempos de espera longos e frustrantes ao fazer consultas, o que poderia levar a uma experiência do usuário ruim e a uma diminuição no uso do sistema. Portanto, a compreensão desses conceitos é essencial para qualquer pessoa que trabalhe com bancos de dados relacionais.



Atividade de Fixação


No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como seu entendimento sobre este conteúdo está, estão sendo sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento nesta disciplina.