
Envoyé par
JeitEmgie
je ne m'attendrais pas à des miracles…
l'essentiel du travail est quand même l'écriture des N tuples et non le parsing des commandes…
et 1 INSERT de N tuples au lieu de N INSERT de 1 tuple, c'est toujours N écritures dans la DB…
sans parler qu'en amont pour qu'un telle "optimisation" puisse se faire, l'implémentation va devoir tester un graphe de dépendances d'objets…
si l'exercice peut être trivial pour un schéma simple, plus on aura de relations via des foreign keys ou via de l'inhéritance, plus l'analyse du graphe permettant de décider si oui ou non cette optimisation peut être faite va être lourde…
(sans parler du fait qu'il faudrait démontrer mathématiquement que cette analyse puisse répondre de manière déterministe dans un temps fini…)
la question étant principalement pour l'optimiseur de savoir si 1 persist qui implique 2 insert dans 2 tables A et B, est-ce que lors du deuxième persist on peut réarranger
INSERT INTO A TUPLE_A1
INSERT INTO B TUPLE_B1
INSERT INTO A TUPLE_A2
INSERT INTO B TUPLE_B2
en
INSERT INTO A TUPLE_A1, TUPLE_A2
INSERT INTO B TUPLE_B1, TUPLE_B2
sans risque de violation de contraintes : donc qu'aucun TUPLE_Ax n'ait de relations vers un quelconque TUPLE_By… (entres autres…)
Sans parler encore du fait que le calcul d'optimisation possible se fait probablement sur une machine A (celle qui héberge la WebApp) pour gagner du temps sur une machine B probablement distincte (celle qui héberge la DB)…
et dans le cas contraire, est-ce qu'une application basée sur une DB qui tourne tout sur un seul serveur faut la peine de se poser ce genre de questions ?
Partager