O que significa analisar uma consulta?
A maioria das bases de dados relacionais lida com uma consulta JDBC / SQL em quatro etapas:
- analisem a consulta SQL recebida
- Compile a consulta SQL
- Plano / optimização da localização de aquisição de dados
- executar a consulta optimizada / adquirir e devolver os dados
quero saber o que significa realmente" analisar a consulta recebida"? E o que significa" planejar/otimizar o caminho de aquisição de dados"?
4 answers
Processamento é uma etapa no processamento de uma declaração SQL. Quando uma aplicação emite uma declaração SQL,a aplicação faz uma chamada de processamento para a base de dados . Durante a chamada de processamento, base de dados:
- verifica a validade sintática e semântica da declaração.
- determina se o processo de emissão da declaração tem privilégios para a executar.
- atribui uma área SQL privada para a declaração.
O processamento é um dos processos de compilação.
Fases de um compilador:
Fonte: fases do compilador
Analisar significa examinar os caracteres introduzidos e reconhecê-lo como um comando ou declaração, olhando através dos caracteres para palavras-chave e identificadores, ignorando comentários, organizando porções citadas como constantes de string, e combinando a estrutura geral com a sintaxe da linguagem fazendo sentido de tudo.
Planejar / otimizar significa descobrir a melhor maneira (de todas as maneiras possíveis) de determinar o resultado, geralmente em relação ao tempo de execução. Poderia também significa minimizar o número de fechaduras necessárias. Talvez algumas partes da consulta podem ser ignoradas ({[[0]}) ou uma tabela não precisa ser acessada em tudo, etc.
1) análise sintática da consulta de acordo com as regras da gramática SQL, etc. e tentando "tokenize" a consulta na forma de partes elementares.
2) planeamento/optimização: nessa fase, o motor SQL tenta avaliar qual seria a melhor forma de executar a sua consulta. Ele tenta tirar proveito dos índices existentes, clusters e relações de tabela; encontrar maneiras em torno de varreduras de mesa completas, utilizar caching efetivamente, evitando leituras de dados repetidas, e assim diante.