Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1809 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Auteur Sujet :

[ question aux gurus sql ] est ce faisable algorithmiquement en sql ?

n°1157230
matthieu_p​hpmv
Posté le 22-07-2005 à 14:35:52  profilanswer
 

Reprise du message précédent :
je parle d'arjuna, dont je trouve le comportement vraiment très désagréable, hautain et fier, je n'aime pas du tout ce genre d'attitudes...
enfin nous ne sommes pas là pour faire de la psychologie  :(

mood
Publicité
Posté le 22-07-2005 à 14:35:52  profilanswer
 

n°1157233
FlorentG
Posté le 22-07-2005 à 14:37:13  profilanswer
 

Enfin Arjuna aide quand-même pas mal de monde ici ;)

n°1157401
cesarr89
Posté le 22-07-2005 à 16:24:53  profilanswer
 

matthieu_phpmv a écrit :

je parle d'arjuna, dont je trouve le comportement vraiment très désagréable, hautain et fier, je n'aime pas du tout ce genre d'attitudes...
enfin nous ne sommes pas là pour faire de la psychologie  :(


 
N'empeche que chacune des interventions d'Arjuna est riche pour tous.
Je pense que en matière de BDD c'est un des meilleurs forumeurs.
 
 

FlorentG a écrit :

Enfin Arjuna aide quand-même pas mal de monde ici ;)


 
Oui tout à fait.

n°1157424
docmaboul
Posté le 22-07-2005 à 16:39:18  profilanswer
 

Arjuna a écrit :

2/ Si MySQL erst pénalisé par des sous-requêtes, alors ça justifie, sans besoin d'une ligne de plus, le fait que je le traîte de bouse infâme
 
Exemple :

Code :
  1. select count(*), orgid from asset
  2. group by orgid


 
Est rigoureusement équivalent (en temps et en résultat) à :

Code :
  1. select count(tmp.orgid), tmp.orgid
  2. from
  3. (
  4. select orgid
  5. from asset
  6. where orgid % 2 = 0
  7. ) tmp
  8. group by tmp.orgid
  9. union
  10. select count(tmp.orgid), tmp.orgid
  11. from
  12. (
  13. select orgid
  14. from asset
  15. where orgid % 2 = 1
  16. ) tmp
  17. group by tmp.orgid


 
Si avec MySQL tu constates un différence aussi infime soit-elle, c'est que le moteur est clairement totalement à réécrire.


 
Ben non. D'une part parce qu'il y aura toujours une différence infime, et quelque soit le sgbd, parce que l'optimiseur doit se palucher une requête écrite par un âne avec de gros sabots et d'autre part parce qu'un optimiseur n'est pas là pour réécrire correctement n'importe quoi. Faut dire que c'est de la pure philosophie microsoft votre histoire: "un produit est une bouse s'il ne sait pas corriger les âneries de l'utilisateur (bref, s'il n'a pas été conçu pour des ânes)" [:rhetorie du chaos]

n°1157429
cesarr89
Posté le 22-07-2005 à 16:41:48  profilanswer
 

docmaboul a écrit :

Ben non. D'une part parce qu'il y aura toujours une différence infime, et quelque soit le sgbd, parce que l'optimiseur doit se palucher une requête écrite par un âne avec de gros sabots et d'autre part parce qu'un optimiseur n'est pas là pour réécrire correctement n'importe quoi. Faut dire que c'est de la pure philosophie microsoft votre histoire: "un produit est une bouse s'il ne sait pas corriger les âneries de l'utilisateur (bref, s'il n'a pas été conçu pour des ânes)" [:rhetorie du chaos]


 
Il sert à quoi alors?

n°1157435
docmaboul
Posté le 22-07-2005 à 16:46:59  profilanswer
 

cesarr89 a écrit :

Il sert à quoi alors?


 
A trouver le meilleur plan d'exécution.

n°1157436
cesarr89
Posté le 22-07-2005 à 16:48:26  profilanswer
 

docmaboul a écrit :

A trouver le meilleur plan d'exécution.


 
 
Donc il peut avoir à réécrire la requête.
 
Edit: http://forum.hardware.fr/forum2.ph [...] ash_post=0


Message édité par cesarr89 le 22-07-2005 à 16:49:05
n°1157444
docmaboul
Posté le 22-07-2005 à 16:55:20  profilanswer
 

cesarr89 a écrit :

Donc il peut avoir à réécrire la requête.
 
Edit: http://forum.hardware.fr/forum2.ph [...] ash_post=0


 
Groumf :o
 

Citation :

Les SGBD (tous ?), du moins, Oracle et SQL Server sont TRES sensibles à l'ordre des tables dans la clause FROM. Avec ou sans clés étrangères explicites, ces deux SGBD en tout cas, font confiance à l'ordre des tables dans la clause FROM pour optimiser leur plan d'éxécution.


 
Comme disait l'autre, ce sont des bouses... :o

n°1157445
cesarr89
Posté le 22-07-2005 à 16:56:38  profilanswer
 

docmaboul a écrit :

Groumf :o
 

Citation :

Les SGBD (tous ?), du moins, Oracle et SQL Server sont TRES sensibles à l'ordre des tables dans la clause FROM. Avec ou sans clés étrangères explicites, ces deux SGBD en tout cas, font confiance à l'ordre des tables dans la clause FROM pour optimiser leur plan d'éxécution.


 
Comme disait l'autre, ce sont des bouses... :o


 
Question de point de vue...


---------------
!== Force et honneur ==!
n°1157473
Arjuna
Aircraft Ident.: F-MBSD
Posté le 22-07-2005 à 17:31:32  profilanswer
 

Moi j'aime bien quand je sais ce que je fais avec mon outils. Que l'ordre des tables dans la clause forme impacte le plan d'éxécution est extrêment important au cas où l'optimiseur n'arrive pas à trouver lui-même les meilleurs index notamment : on peut le forcer à scanner les tables dans un ordre précis, et ainsi garantir un temps de réponse toujours correct même si les stats ne sont plus à jour.
 
Par contre, je n'aime pas quand mon outils ne comprends pas ce que je fais. Demander les nombres pair et impair dans une même requête, c'est normal qu'il comprenne tout seul comme un grand qu'on veut tout.
 
Ensuite, un autre petit exemple que j'ai donné à un développeur de ma boîte ce matin :
 
"select count(*) from latable where champ like '%s%'"
=> full scan de la table
 
"select count(*) from latable where 1 = 1"
=> lecture de la PK uniquement
 
"select count(*) from latable where 1 = 1 or champ like '%s%'"
=> lecture de la PK uniquement
 
"select count(*) from latable where champ like '%s%' or 1 = 1"
=> lecture de la PK uniquement
 
Ben je trouve ça intéressant que SQL Server s'occupe de faire les tri les plus faciles en premier, avant de passer à ceux qui mettent deux heures. Ce n'est pas le cas de tous les SGBD.
Il faudrait voir comment se comportent Oracle et MySQL. Oracle, à priori, je n'ai jamais eu de changement de perfs quelque soit l'ordre de mes critères de filtres. MySQL, jamais testé.

mood
Publicité
Posté le 22-07-2005 à 17:31:32  profilanswer
 

n°1157504
docmaboul
Posté le 22-07-2005 à 18:12:53  profilanswer
 

Arjuna a écrit :

Moi j'aime bien quand je sais ce que je fais avec mon outils. Que l'ordre des tables dans la clause forme impacte le plan d'éxécution est extrêment important au cas où l'optimiseur n'arrive pas à trouver lui-même les meilleurs index notamment : on peut le forcer à scanner les tables dans un ordre précis, et ainsi garantir un temps de réponse toujours correct même si les stats ne sont plus à jour.


 
C'est sûr qu'avec un truc qui se vautre lamentablement, il vaut mieux pouvoir le forcer à ne pas se vautrer. Après, y voir un argument en la faveur du truc qui se vautre lamentablement, hrum...
 

Citation :

Par contre, je n'aime pas quand mon outils ne comprends pas ce que je fais. Demander les nombres pair et impair dans une même requête, c'est normal qu'il comprenne tout seul comme un grand qu'on veut tout.


 
Non, il n'y a rien de "normal" à ce qu'il doive comprendre que vous lui racontez n'importe quoi. Qu'il le fasse tant mieux sinon, ça obligera le développeur à réfléchir à ses requêtes.
 

Citation :

Ben je trouve ça intéressant que SQL Server s'occupe de faire les tri les plus faciles en premier, avant de passer à ceux qui mettent deux heures. Ce n'est pas le cas de tous les SGBD.
Il faudrait voir comment se comportent Oracle et MySQL. Oracle, à priori, je n'ai jamais eu de changement de perfs quelque soit l'ordre de mes critères de filtres. MySQL, jamais testé.


 
De toute façon, il n'y a pas à tortiller du cul pour chier droit: à chaque bench (illégal) où apparaîssent MySql, Oracle et SQLServer, Oracle et MySql se battent en tête en laissant la daube de krosoft loin derrière :D


Message édité par docmaboul le 22-07-2005 à 18:13:13
n°1157519
Arjuna
Aircraft Ident.: F-MBSD
Posté le 22-07-2005 à 18:27:12  profilanswer
 

ben on regarde pas les même benchs. moi, ceux que je vois, oracle et sql server sont au coude à coude, alors que mysql n'est même pas testé, ne supportant pas le nécessaire pour être évalué avec le même bench.

n°1157533
matthieu_p​hpmv
Posté le 22-07-2005 à 18:45:06  profilanswer
 

ça pourrait être intéressant que chacun se justifie avec des URLs montrant des benchs "récents" (c'est évident)
 
au moins on apprendrait qqch qui ne tiendrait pas du "sqlserver c'est mieux" "non mysql c'est mieux"

n°1157534
skeye
Posté le 22-07-2005 à 18:46:08  profilanswer
 

mysql n'est même pas dans la course comme SGBD sérieux, manque trop de choses.:o


---------------
Can't buy what I want because it's free -
n°1157613
matthieu_p​hpmv
Posté le 22-07-2005 à 20:12:45  profilanswer
 

il manque quoi par exemple ?
Merci de vous JUSTIFIER par des sources précises...

n°1157840
cesarr89
Posté le 23-07-2005 à 12:39:46  profilanswer
 

matthieu_phpmv a écrit :

il manque quoi par exemple ?
Merci de vous JUSTIFIER par des sources précises...


 
Juste comme ca, tu as regarder les nouveux apports pour SQL Server??
Requête sur XML(intégration XPath et XQuery), P/S en .NET,......je pense que rien qu'avec ça, ca suffit à enterrer MySQL.
Et ne crois pas que je suis contre MySQL puisque je travail avec. Donc je sais de quoi je parle aussi.

n°1157971
matthieu_p​hpmv
Posté le 23-07-2005 à 17:19:03  profilanswer
 

heu.. là on parle de ce qui manque à mysql pour prétendre accéder, car il semble ne pas pouvoir, à la hauteur (relative) des concurrents, et tu sors que sqlserver intègre XPATH ?? euh :-D  
je dis pas que c'est inutile, mais ce n'est pas LA fonctionnalité ultime quand même. C'est surement très bien (tu peux montrer un exemple d'ailleurs stp ?), mais ce n'est pas le genre de choses que les autres posteurs critiquaient je pense.  
 
Moi je voudrais bien savoir ce qu'il manque à mysql pour qu'il n'ai plus cette réputation de sgbd tout pourri que les gens (qui pètent plus haut que leur cul) lui donne volontiers.
 
Merci de me citer les fonctionnalités IMPORTANTES qui lui manquent (il y en a surement mais je n'ai pas connaissance).

n°1158202
betsamee
Asterisk Zeperyl
Posté le 24-07-2005 à 08:39:22  profilanswer
 

Citation :


Moi je voudrais bien savoir ce qu'il manque à mysql pour qu'il n'ai plus cette réputation de sgbd tout pourri que les gens (qui pètent plus haut que leur cul) lui donne volontiers.  


jusqu'a y a pas longtemps les vues et les triggers , ils devaient etre implementes dans la version 5.0.X je ne sait pas si c'est le cas

n°1158329
matthieu_p​hpmv
Posté le 24-07-2005 à 15:02:01  profilanswer
 

c'est pas encore parfait mais ça fonctionne
http://dev.mysql.com/doc/mysql/en/triggers.html
 
http://dev.mysql.com/doc/mysql/en/views.html
 
dans quelques semaines/mois ce sera à la hauteur des concurrents je pense..
aux spécialistes, que font les concurrents dans ces domaines que mysql ne fait pas encore ?


Message édité par matthieu_phpmv le 24-07-2005 à 15:03:25
n°1158658
megadub
Posté le 25-07-2005 à 07:47:40  profilanswer
 

docmaboul a écrit :

Groumf :o
 

Citation :

Les SGBD (tous ?), du moins, Oracle et SQL Server sont TRES sensibles à l'ordre des tables dans la clause FROM. Avec ou sans clés étrangères explicites, ces deux SGBD en tout cas, font confiance à l'ordre des tables dans la clause FROM pour optimiser leur plan d'éxécution.


 
Comme disait l'autre, ce sont des bouses... :o


 
Oracle n'est absolument pas sensible à l'ordre des tables depuis la 8i avec l'avénement du CBO (Cost Based Optimizer) basé sur des statistiques calculées sur les tables et indexes à contrario du RBO (Rule Based Optimizer) basé sur des régles strictes dont l'ordre des tables.
 
Je serait très surpris que SQL Server n'est pas également évolué en ce sens :/

n°1158659
megadub
Posté le 25-07-2005 à 07:49:19  profilanswer
 

docmaboul a écrit :


De toute façon, il n'y a pas à tortiller du cul pour chier droit: à chaque bench (illégal) où apparaîssent MySql, Oracle et SQLServer, Oracle et MySql se battent en tête en laissant la daube de krosoft loin derrière :D


 
t'as des sources parce que moi j'ai toujours vu MySQL à la ramasse sur les gros volumes :)
 
Ce n'est pas une grande étude mais ça me parait confirmer mes lectures :
http://www.developpez.net/forums/v [...] sc&start=0
 
A choisir un SGBD alternatif, PostgreSQL est bien plus prometteur et complétement gratuit :)
MySQL est payant dés lors qu'il est inclus dans une appli payante ;)


Message édité par megadub le 25-07-2005 à 07:52:25
n°1158660
megadub
Posté le 25-07-2005 à 07:49:51  profilanswer
 

matthieu_phpmv a écrit :

il manque quoi par exemple ?
Merci de vous JUSTIFIER par des sources précises...


 
sauvegarde à chaud et clustering par exemple :)

n°1158692
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2005 à 09:28:52  profilanswer
 

matthieu_phpmv a écrit :

Merci de me citer les fonctionnalités IMPORTANTES qui lui manquent (il y en a surement mais je n'ai pas connaissance).


Bon, je ne connais pas tout ce que fais MySQL, mais des trucs importants (outre le clustering et le backup à chaud en effet), moi je vois ça. (certaines sont peut-être déjà intégrées dans MySQL, mais je doute que la plupart le soient)
 
- Liaisons multi-base
- Liaisons multi-serveur
- Liaisons multi-sgbd (peux-tu faire une jointure entre un table MySQL et une table Oracle directement depuis MySQL ? Avec SQL Server on peut, Oracle très certainement aussi)
- Transactions imbriquées (faut commencer par le commencement)
- Transactions distribuées
- Scripts de transformations de données multi-sources (ensemble des 3 permettant d'importer/exporter des données sans se prendre la tête à faire un programme rien que pour ça)
 
Ca, ça me semble être les points les plus utilisés et les plus importants.
Pour les points 3, 5 et 6, je suis certain que MySQL ne les supporte pas (le 5 avec un peu beaucoup de chance)

n°1158693
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2005 à 09:30:51  profilanswer
 

matthieu_phpmv a écrit :

c'est pas encore parfait mais ça fonctionne
http://dev.mysql.com/doc/mysql/en/triggers.html
 
http://dev.mysql.com/doc/mysql/en/views.html
 
dans quelques semaines/mois ce sera à la hauteur des concurrents je pense..
aux spécialistes, que font les concurrents dans ces domaines que mysql ne fait pas encore ?


Ca fait 2 ans (peut-être même plus) que Joce a posté les résultats de ses premiers tests avec des PS. Vu à quel point ça semble avoir évolué, je doute grandement que d'ici "quelques semaines" (à partir de 50 on peut toujours dire "quelques" ?) ce soit au point.

n°1158696
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2005 à 09:33:37  profilanswer
 

megadub a écrit :

Oracle n'est absolument pas sensible à l'ordre des tables depuis la 8i avec l'avénement du CBO (Cost Based Optimizer) basé sur des statistiques calculées sur les tables et indexes à contrario du RBO (Rule Based Optimizer) basé sur des régles strictes dont l'ordre des tables.
 
Je serait très surpris que SQL Server n'est pas également évolué en ce sens :/


Le souci, c'est que les stats, c'est fait pour pas être à jour :/
 
SQL Server, en temps normal, est certainement très peu sensible à l'ordre des tables.
Mais récemment encore, je me suis retrouvé à diviser le temps d'éxécution d'une PS par 20 parceque j'ai changé l'ordre des tables dans une requête.
 
Il faut dire aussi qu'en plus, vu que c'était une PS, le plan étant calculé une fois pour toute, je ne pouvais plus rien gagner même après une maj des stats. Après correction de ce truc, j'ai pas cherché à faire des tests plus aboutis.

n°1158702
megadub
Posté le 25-07-2005 à 09:40:06  profilanswer
 

Arjuna a écrit :

Le souci, c'est que les stats, c'est fait pour pas être à jour :/


 
Charge au DBA de faire le nécessaire... un petit job et basta ;)
 

Arjuna a écrit :

SQL Server, en temps normal, est certainement très peu sensible à l'ordre des tables.
Mais récemment encore, je me suis retrouvé à diviser le temps d'éxécution d'une PS par 20 parceque j'ai changé l'ordre des tables dans une requête.
 
Il faut dire aussi qu'en plus, vu que c'était une PS, le plan étant calculé une fois pour toute, je ne pouvais plus rien gagner même après une maj des stats. Après correction de ce truc, j'ai pas cherché à faire des tests plus aboutis.


 
Sous Oracle ça peut également arriver simplement parce que le nombre de permutation n'est pas infini. Il est paramétrable mais un nombre trop grand risque fort de générer un parsing TREEEEEESSSS long sur les requêtes complexes. Mais heureusement, il existe les hints pour "forcer" un plan d'exéctution ;) ou les vues pour simplifier les requêtes et aider l'optimiseur à s'y retrouver :)


Message édité par megadub le 25-07-2005 à 09:40:31
n°1158820
docmaboul
Posté le 25-07-2005 à 11:05:57  profilanswer
 

Arjuna a écrit :

Le souci, c'est que les stats, c'est fait pour pas être à jour :/
 
SQL Server, en temps normal, est certainement très peu sensible à l'ordre des tables.
Mais récemment encore, je me suis retrouvé à diviser le temps d'éxécution d'une PS par 20 parceque j'ai changé l'ordre des tables dans une requête.
 
Il faut dire aussi qu'en plus, vu que c'était une PS, le plan étant calculé une fois pour toute, je ne pouvais plus rien gagner même après une maj des stats. Après correction de ce truc, j'ai pas cherché à faire des tests plus aboutis.


 
Dans ces cas-là, une fois la maj des stats faite, il suffit de recompiler la ps pour que le plan soit recalculé.


Message édité par docmaboul le 25-07-2005 à 11:06:28
n°1158825
megadub
Posté le 25-07-2005 à 11:08:37  profilanswer
 

sous SQL Server le plan est calculé à la compil... pas à l'exécution ? Etrange...

n°1158826
docmaboul
Posté le 25-07-2005 à 11:08:39  profilanswer
 

megadub a écrit :

sauvegarde à chaud et clustering par exemple :)


 
google: mysql cluster.

n°1158829
docmaboul
Posté le 25-07-2005 à 11:10:53  profilanswer
 

megadub a écrit :

t'as des sources parce que moi j'ai toujours vu MySQL à la ramasse sur les gros volumes :)
 
Ce n'est pas une grande étude mais ça me parait confirmer mes lectures :
http://www.developpez.net/forums/v [...] sc&start=0
 
A choisir un SGBD alternatif, PostgreSQL est bien plus prometteur et complétement gratuit :)
MySQL est payant dés lors qu'il est inclus dans une appli payante ;)


 
c'est bien mignon ce genre de bench mais ça ne veut rien dire. Dans le même genre, j'avais réussi à faire tourner un sybase 5 fois plus vite sur un celeron 400 en ide que sur un athlon 1400 en ultra-wide (en optimisant la config du celeron pour mon bench et en laissant celle par defaut sur l'athlon...)

n°1158853
megadub
Posté le 25-07-2005 à 11:22:24  profilanswer
 

docmaboul a écrit :

google: mysql cluster.


 
au temps pour moi, je parlais de partitionnement des tables qui te permet de séparer physiquement les données d'une même table selon un critère technique ou fonctionnelle : par année ou tous les millions de lignes par exemple ;)
 
Cela améliore énormément les perfs dans les gros volumes :)
 
Pour le comparatif, je suis d'accord avec toi mais là c'est sur même machine et à config égale c'est plus intéressant que ce que tu avais fait même si c'est loin d'être ultra rigoureux ;)

n°1158858
megadub
Posté le 25-07-2005 à 11:23:54  profilanswer
 
n°1158867
docmaboul
Posté le 25-07-2005 à 11:27:33  profilanswer
 

megadub a écrit :

au temps pour moi, je parlais de partitionnement des tables qui te permet de séparer physiquement les données d'une même table selon un critère technique ou fonctionnelle : par année ou tous les millions de lignes par exemple ;)
 
Cela améliore énormément les perfs dans les gros volumes :)


 
Ah d'accord, ça s'appelle (appelait?) de l'horizontal splitting cette technique-là :D
 

Citation :

Pour le comparatif, je suis d'accord avec toi mais là c'est sur même machine et à config égale c'est plus intéressant que ce que tu avais fait même si c'est loin d'être ultra rigoureux ;)


 
ben faudrait surtout qu'il donne la config de ses serveurs, de ses bases, de ses tables, de ses indexes, ..., parce que comme ça, on peut pas en tirer grand-chose (pour ne pas dire rien).


Message édité par docmaboul le 25-07-2005 à 11:47:49
n°1158873
megadub
Posté le 25-07-2005 à 11:31:27  profilanswer
 

peu importe justement de la config... on s'en fout de ce qu'il a, l'important c'est de comparer tous les SGBD sur la même ;)
 
Bon, après évidemment, s'il alloue 2Go de mémoire à Oracle et 200ko à MySQL il va y avoir un problème ;)

n°1158881
bjone
Insert booze to continue
Posté le 25-07-2005 à 11:35:05  profilanswer
 

matthieu_phpmv a écrit :


... prêt à financer à perte le R&D d'une filiale...


 
Le SQL et les SGDB ne m'interressent pas, mais selon toi on devrait fermer le CNRS, arrêter la recherche fondamentale, licencier tous les ingés & chercheurs de toutes les boites de part le monde...
 
à la base, toute R&D ne garanti pas retour sur investissement...... et beaucoup de projets finissent à la benne, certainement que pour tout le monde (hi-tech, physique, médical... ), y'a ptet même que 10% des projets amorçés en R&D qui s'avèrent viable (mais qui profitent du retour de savoir sur les projets non viables)....

n°1158883
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2005 à 11:35:48  profilanswer
 

megadub a écrit :

sous SQL Server le plan est calculé à la compil... pas à l'exécution ? Etrange...


:??:
 
Ben oui, c'est le but d'une PS, c'est pareil sur tous les SGBD : le plan est calculé au moment de la compilation de la PS, pas à l'éxécution. C'est d'ailleurs là dessus qu'une PS est plus rapide qu'une requête classique : plan déjà connu, donc phase de parsing et d'optimisation ignorée à l'éxécution.

n°1158898
megadub
Posté le 25-07-2005 à 11:47:54  profilanswer
 

Arjuna a écrit :

:??:
 
Ben oui, c'est le but d'une PS, c'est pareil sur tous les SGBD : le plan est calculé au moment de la compilation de la PS, pas à l'éxécution. C'est d'ailleurs là dessus qu'une PS est plus rapide qu'une requête classique : plan déjà connu, donc phase de parsing et d'optimisation ignorée à l'éxécution.


 
Ha non, c'est pas pareil pour tout les SGBD. Oracle ne parsent pas les requêtes si on réexécute la même ou qu'on utilise les techniques appropriés (CURSOR_SHARING et/ou bind variable) mais si la requête change ou simplement si ça fait trop longtemps qu'elle est pas exécuté elle est à nouveau parsée. La procédure stockée ne permet que de centraliser le code et n'a aucun intérêt en terme de perf, une requête reste une requête, qu'elle soit lancé dans une vue, une proc stockée ou directement sous SQL*Plus ET HEUREUSEMENT.
 
J'imagine même pas recompiler les milliers de procédures, fonctions ou packages d'une appli à chaque collecte de statistiques :/
 
Franchement là vous me surprenez... je trouve ça TRES étrange comme comportement... Donc si vous créez un index sur une table il faut recompiler toutes les procédures qui appellent cette table pour que l'index soit pris en compte ?

n°1158901
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2005 à 11:48:34  profilanswer
 

docmaboul a écrit :

c'est bien mignon ce genre de bench mais ça ne veut rien dire. Dans le même genre, j'avais réussi à faire tourner un sybase 5 fois plus vite sur un celeron 400 en ide que sur un athlon 1400 en ultra-wide (en optimisant la config du celeron pour mon bench et en laissant celle par defaut sur l'athlon...)


Pas d'accord, un bench, pour être validable doit répondre à l'un des deux cas suivants :
-> AUCUNE optimisation : install classique, et basta.
-> Optimisation suivant UNIQUEMENT ce qui est décrit dans le white paper d'optimisation que fourni l'éditeur.
 
EN AUCUN CAS un DBA doit toucher à une base qui va servir à un test, parceque si un DBA connait bien un SGBD, il ne les connait pas tous, donc les optimisations seront inégales d'une machine à l'autre, donc le bench sera biasé.
 
Les deux benchs validables permettent de tester :
-> Les capacité du produit à s'adapter à une mauvaise optimisation, ainsi que les optimisation "générales" inclues dans les paramètres par défaut. C'est pas terrible comme bench, mais plus de 90% des produits sont utilisés comme tel, donc très représentatif.
-> Les capacités de l'éditeur à fournir des documentations complètes et pertinantes quant à l'utilisation de leurs produits, ainsi que les paramètres "courants" d'optimisation.
 
A chaque fois que j'ai pu voir un bench sur des "vrais sites" (pas un truc fais au fond de sa cave sur un portable overclocké), c'était en suivant ces critères.
 
A noter un très bon site effectué à la demande de Microsoft comparant SQL Server, Oracle, DB2 et MySQL, couplés aux environnement PHP, Java, .NET et programme compilé, reprenant l'exemple "Pet Shop" (exemple classique fourni dans toutes les documentations de Microsoft, qui est une petite boutique en ligne).
 
Les résultats étaient sans appel (sans parler de l'environnement) :
MySQL très rapide dans les tests préliminaires (peut de charge)
Oracle et DB2 étaient les plus à la ramasse dans ces deux cas (moteurs trop lourd pour des petites requêtes)
 
Avec montée en charge (10 000 commandes/consutlation du catalogue par seconde avec 1000 connections concurrentes pendant une heure), Oracle et SQL Server étaient au coude à coude, puis DB2 et enfin MySQL qui n'a pas validé les derniers tests (dépassement de la capacité de charge et éffrondrement du serveur).
 
Les tests étaient effectués selon des documentations préconisées par les éditeurs en fonction du bench. Ca fait un moment que ce bench est sorti, on peut peut-être encore le trouver sur le site de la MSDN (c'est là que je l'avais trouvé à l'époque).
 
A la défense de MySQL, ce teste date de 2002 ou 2003, et MySQL a pas mal évolué depuis.
Si les souvenirs sont bon, on pouvait télécharger les documentations fournies par les éditeurs pour l'installation/optimisation de leurs produits. Je ne me souviens plus s'il y avait les sources de l'appli ou pas par contre.

n°1158908
docmaboul
Posté le 25-07-2005 à 11:52:37  profilanswer
 

megadub a écrit :

peu importe justement de la config... on s'en fout de ce qu'il a, l'important c'est de comparer tous les SGBD sur la même ;)
 
Bon, après évidemment, s'il alloue 2Go de mémoire à Oracle et 200ko à MySQL il va y avoir un problème ;)


 
Ben nan, on s'en fout pas de la configuration des serveurs (sous-entendu des serveurs de bdd, évidemment). Là, il ne donne même pas l'os, les versions utilisées, s'il fait tourner le client sur la même machine que le serveur, ... Bref; à mes yeux, ça ne vaut rien comme résultat.

n°1158912
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2005 à 11:54:58  profilanswer
 

megadub a écrit :

Ha non, c'est pas pareil pour tout les SGBD. Oracle ne parsent pas les requêtes si on réexécute la même ou qu'on utilise les techniques appropriés (CURSOR_SHARING et/ou bind variable) mais si la requête change ou simplement si ça fait trop longtemps qu'elle est pas exécuté elle est à nouveau parsée. La procédure stockée ne permet que de centraliser le code et n'a aucun intérêt en terme de perf, une requête reste une requête, qu'elle soit lancé dans une vue, une proc stockée ou directement sous SQL*Plus ET HEUREUSEMENT.
 
J'imagine même pas recompiler les milliers de procédures, fonctions ou packages d'une appli à chaque collecte de statistiques :/
 
Franchement là vous me surprenez... je trouve ça TRES étrange comme comportement... Donc si vous créez un index sur une table il faut recompiler toutes les procédures qui appellent cette table pour que l'index soit pris en compte ?


SQL Server aussi sait faire de la réutilisation des plan d'execution. Mais je ne prends pas ce truc en compte, parceque dans la réalité, c'est très rare que tu exécute 25 fois la même requête, hors le buffer qui contient les plan est très limité, donc passé une dizaine de requêtes différentes à la suite, le sgbd ne se souvient plus des requêtes précédentes. Cette optimisation est selon moi inutile.
 
Par contre, Oracle tout comme SQL Server (et ça c'est SUR), compile le plan avant l'éxécution. Il le vérifie par contre lors de l'éxécution, et recompile le cas échéant si les tables utilisées on subit des changements. Comment ça marche exactement, j'en sais rien, je pense que dans le plan il garde un numéro de version interne des objets utilisés, et ce numéro change à chaque modification d'un objet, du coup il sait quand il dfoit recompiler.

n°1158914
megadub
Posté le 25-07-2005 à 11:55:13  profilanswer
 

docmaboul a écrit :

Ben nan, on s'en fout pas de la configuration des serveurs (sous-entendu des serveurs de bdd, évidemment). Là, il ne donne même pas l'os, les versions utilisées, s'il fait tourner le client sur la même machine que le serveur, ... Bref; à mes yeux, ça ne vaut rien comme résultat.


comme tu veux... c'était juste pour info ;)
 
Effectivement Arjuna, j'ai vu le même mais j'suis pas foutu de le retrouver :/
 
Il y a la question de reprise sur incident qui doit être prise en compte aussi... MySQL n'a pas l'artillerie de SQL Server ou Oracle ;)


Message édité par megadub le 25-07-2005 à 11:59:25
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5

Aller à :
Ajouter une réponse
 

Sujets relatifs
vbs et html question (a priori)question générale
question sur les array()J'ai une question sur le onMouseOver
[Python] Question de débutant, entrée stdin dans un scriptQuestion for beginners!
question sur chaines de caracteresQuestion de prix ?
question VIQuestion XML / XSL
Plus de sujets relatifs à : [ question aux gurus sql ] est ce faisable algorithmiquement en sql ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR