jeu. 07 janvier 2016, 19h15
Michel Lévy
France
atoutfox.public.association
Re: Bases SQL et multi-threading
dans notre univers SQL server, le parallélisme, ce n'est pas exactement ce que tu décris. ton instruction est composée d'opérateur logiques, et le parallélisme s'applique aux opérateurs physiques.
sur un SQL server (y compris en édition Express, gratuite), le moteur va analyser ta requète et choisir le plan d'exécution qui convient le mieux.
Un plan d'exécution, c'est un enchainement d'opération physiques, qui dépend des index, de la cardinalité de chaque instruction, de la cardinalité des tables et des index, etc... Ces plans sont mis en cache et sont réutilisés si nécessaire (la nécessité est réévaluée à chaque fois que la requète est redemandée).
ne jamais oublier que SQL server lit/écrit par plage de 8K, donc selon les cas, le moteur trouvera plus performant de scanner l'index ou au contraire de scanner la table, ou au contraire d'alterner seek et scan de table ou d'index, etc...
sur les SQL versions entreprise (et standard et BI, je ne sais plus), tu peux en plus demander à paralléliser les traitements, et aussi à les répartir par processeur. Mais ça n'est jamais sur les opérateurs logiques (JOIN, SELECT, etc), mais sur les opérateurs physiques. Et il faut des volumétries importantes pour que ça soit intéressant (et même là ça n'est pas toujours évident, ça dépend vraiment des cas).
Est-ce que tu as un SQL developper édition? ça te permet de travailler sur les plans d'exécution, de voir ce que ton moteur SQL fait de tes demandes, d'analyser finement.
Permalink : http://www.atoutfox.org/nntp.asp?ID=0000017110