La plupart des bases de données relationnelles traitent une requête JDBC/SQL en quatre étapes:
Je veux savoir ce que "analyser la requête entrante" signifie vraiment? Et que signifie "planifier/optimiser le chemin d'acquisition des données"?
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:
l'analyse est l'un des processus de compilation.
Phases d'un compilateur:
Source: Phases of Compiler
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.
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) 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.