web-dev-qa-db-fra.com

Que signifie l'analyse d'une requête?

La plupart des bases de données relationnelles traitent une requête JDBC/SQL en quatre étapes:

  1. Analyser la requête SQL entrante
  2. Compiler la requête SQL
  3. Planifier/optimiser le chemin d'acquisition des données
  4. Exécuter la requête optimisée/acquérir et renvoyer des données

Je veux savoir ce que "analyser la requête entrante" signifie vraiment? Et que signifie "planifier/optimiser le chemin d'acquisition des données"?

7
user3239652

L'analyse est une étape du traitement d'une instruction SQL. Lorsqu'une application émet une instruction SQL, elle effectue un appel d'analyse à Database . Au cours de l'appel d'analyse, Database:

  1. Vérifie l'instruction pour la validité syntaxique et sémantique.
  2. Détermine si le processus émetteur de l'instruction dispose des privilèges pour l'exécuter. 
  3. Alloue une zone SQL privée à l'instruction.
11
Tushar

l'analyse est l'un des processus de compilation.

Phases d'un compilateur:

enter image description here

Source: Phases of Compiler

2
Ganesh_Devlekar
  1. Analyser signifie examiner les caractères saisis et les reconnaître comme une commande ou une instruction en recherchant des mots clés et des identifiants dans les caractères, en ignorant les commentaires, en organisant les portions entre guillemets en constantes de chaîne et en faisant correspondre la structure globale à la syntaxe du langage.

  2. Planifier/Optimiser signifie déterminer le meilleur moyen (parmi tous les moyens possibles) de déterminer le résultat, généralement en fonction du temps d'exécution. Cela pourrait également signifier de minimiser le nombre de verrous nécessaires. Peut-être que certaines parties de la requête peuvent être ignorées (where ... and 1 == 1) ou qu'une table n'a pas besoin d'être accédée, etc.

1
wallyk

1) Analyse: analyse syntaxique de la requête selon les règles de grammaire SQL, etc., et tentative de "tokenize" de la requête sous la forme de pièces élémentaires.

2) Planification/optimisation: à ce stade, le moteur SQL essaie d’évaluer le meilleur moyen d’exécuter votre requête. Il tente de tirer parti des index, clusters et relations de table existants. trouvez des solutions aux analyses complètes des tables, utilisez la mise en cache efficacement en évitant les lectures répétées de données, etc.

1
uncoder