[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Dolibarr-user] Abstraction de base de données et versions de PHP
From: |
Dany De Bontridder |
Subject: |
Re: [Dolibarr-user] Abstraction de base de données et versions de PHP |
Date: |
Thu, 13 Apr 2006 20:35:03 +0200 |
User-agent: |
KMail/1.8.2 |
On Thursday 13 April 2006 10:57, herve couvelard wrote:
> Dany De Bontridder a écrit :
> Donc, l'argument de l'intégrité est moins déterminant que l'on veut bien
> le penser, et c'est une discussion que j'enfourche facilement,[peut être
> l'age]. Pour donner un peu plus de poids à mon argumentation (arrrfff),
> (coup bas désolé) c'est ton statut de free lance Oracle qui te pousse à
> travailler avec un char d'assaut (au cas ou) pour aller ceuillir des
> paquerettes. :-)
Ben disons que mon travail me permet de bien connaître les bases de
données ;-)
>
> Voila, l'évolution de mysql qui ajoute des fonctionnalités à la Oracle
> et postgre devrait dans un avenir proche voir une migration des
> nombreuses personnes de oracle vers mysql, en laissant à oracle son
> marché NATUREL : le besoin d'une BDD sécurisé à la colone et à la ligne,
> avec la possibilité de faire plein de choses avec des vues graphiques au
> détriment de la performance brute.
Euh...Non j'ai déjà participé à des évaluations (pour la migration Oracle
vers ??) et en opensource Psql tiendrait le coup (fonctionnalité et
performance). Le problème est que MySql n'est bon pas pour la montée en
charge avec des requêtes complexes, et Oracle est vraiment plus performant
que MySql (et Psql), je pense que la vitesse de MySql est surtout une
réputation de même que la lenteur d'Oracle ou de Psql, désolé, j'ai eu
l'opportunité de faire des tests , et non, Oracle est très rapide même
comparé à MySql, on ne se rend pas compte. Bien sûr, on finira par me
répondre "quelle version de MySql, Oracle, Os, tuné, application, nombre de
client et quels seraient les résultats si tu avais d'abord tuné Oracle en
étant bourré ??...." Et on conclura par MySql est p-e plus rapide qu'Oracle
dans certaines circonstances que je n'ai pas pu tester, une impasse
trollesque comme d'hab, la vérité est ailleurs :-).
>
> Par exemple lorsque je fais un essai sur le site phpcompta de demo en
> ligne base compta cvs /journaux/grandlivre/, il y a un 'blanc' de 5-9
> secondes, je ne l'accepterais jamais d'une de mes applications.
> Mais je continue à dire que php compta est une super appli, et ce ne
> serais pas sous postgre, je l'aurais adopté 'de suite'
C'est assez normal, il y a beaucoup de jointure et comme les différentes
tables sont devenues assez grosses ... Le produit cartésien devient
important. Surtout que tout fonctionne avec des métadonnées pour les fiches
et que j'avoue n'avoir pas trop tuné (ni les requêtes SQL ni les index)
Pour donner une idée d'une vue qui ne donne que les clients : il y a 9 sous
requêtes chacune contenant 4 jointures entre 5 tables, fiche +/-
10000lignes,jnt_fic_att_value 50000, attr_value 50000, les autres ont disons
10 lignes chacunes, donc le produit cartésien = 10000*50000*50000*10*10 pour
chaque sous-requête = 2.500.000.000.000.000 "tuples" à filtrer (il y a full
table scan à cause du where) multiplié par 9, tu imagines la masses qu'on te
renvoit en moins de 5 secondes (avec traitement de l'info, temps de réaction
d'apache, lenteur réseau... ), essaie avec MySql et Oracle et dis-moi
honnêtement qui tient la route ;-) (Oracle est effrayant de rapidité, faite
un pg_dump, c'est de l'ANSI Sql) injecté dans Oracle et MySql rejouer les SQL
qu'on trouvera dans la DB log et vous verrez par vous-même. Au faite
seulement un select count sur les vues, vous comprendrez, il y a outil pour
remplir les DB, besoin de données quand je teste
(contrib/test-size/simul.py).
La vue la plus lourde a 13 sous-requêtes.
Pour avoir ce genre de requête va sur fiche-> fournisseur, résultat en 2-3
secondes (affichage compris) pour un résultat de 5000 lignes (et ce n'est pas
la seule requête qui est lancé, c'est la plus grosse elle est dans une vue).
Et ce n'est pas un server dédié uniquement à PhpCompta
SELECT a.f_id, a.av_text AS name, b.av_text AS tva_num, c.av_text AS
poste_comptable, d.av_text AS rue, e.av_text AS code_postal, f.av_text AS
pays, g.av_text AS telephone, h.av_text AS email
FROM ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 1) a
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 13) b USING (f_id)
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 5) c USING (f_id)
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id).
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 14) d USING (f_id)
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 15) e USING (f_id)
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 16) f USING (f_id)
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 17) g USING (f_id)
LEFT JOIN ( SELECT jnt_fic_att_value.jft_id, fiche.f_id, fiche_def.frd_id,
fiche.fd_id, fiche_def.fd_class_base, fiche_def.fd_label,
fiche_def.fd_create_account, fiche_def_ref.frd_text,
fiche_def_ref.frd_class_base, jnt_fic_att_value.ad_id, attr_value.av_text
FROM fiche
JOIN fiche_def USING (fd_id)
JOIN fiche_def_ref USING (frd_id)
JOIN jnt_fic_att_value USING (f_id)
JOIN attr_value USING (jft_id)
WHERE jnt_fic_att_value.ad_id = 18) h USING (f_id)
WHERE a.frd_id = 9
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, (continued)
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Thomas Despoix, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, herve couvelard, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Christophe Battarel, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, herve couvelard, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Marc Barilley, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Thomas Despoix, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Marc Barilley, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Christophe Battarel, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Thomas Despoix, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP, Dany De Bontridder, 2006/04/13
- Re: [Dolibarr-user] Abstraction de base de données et versions de PHP,
Dany De Bontridder <=
- RE: [Phpcompta-contrib] Re: [Dolibarr-user] Synergie Dollibar -PHPCompta, Régis Houssin, 2006/04/12
- [Dolibarr-user] Synergie Dollibar - PHPCompta, Thomas Despoix, 2006/04/11
- RE: [Dolibarr-user] Synergie Dollibar - PHPCompta, Romain OLLIVIER, 2006/04/12
- Re: [Phpcompta-contrib] Re: [Dolibarr-user] Synergie Dollibar - PHPCompta, herve couvelard, 2006/04/12
- [Dolibarr-user] Rodolphe, Eldy? Votre avis par rapport à la proposition de Dany??, Damien PASQUER, 2006/04/13
- Re: [Phpcompta-contrib] Re: [Dolibarr-user] Synergie Dollibar - PHPCompta, Laurent Destailleur (Eldy), 2006/04/20
- RE: [Dolibarr-user] Synergie Dollibar - PHPCompta, Régis Houssin, 2006/04/11
- Re: [Dolibarr-user] Synergie Dollibar - PHPCompta, agnes, 2006/04/11
- Re: [Dolibarr-user] Synergie Dollibar - PHPCompta, Philippe Rousselot, 2006/04/11
- Re: [Dolibarr-user] Synergie Dollibar - PHPCompta, Laurent Destailleur (Eldy), 2006/04/20