PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#26 19/06/2009 18:06:06

gleu
Administrateur

Re : Besoin d'infos sur le resultat issu d'un explain

Je serais intéressé de savoir ce que donne les performances de la requête avec le join_collapse_limit par défaut (8, je crois).

De plus, attention au fait que le côté ordonné se perd au fil des INSERT/UPDATE/DELETE. Donc il faudra exécuter de nouveau CLUSTER de temps à autre.


Guillaume.

Hors ligne

#27 19/06/2009 18:10:07

F.Chanson
Membre

Re : Besoin d'infos sur le resultat issu d'un explain

je retombe
Durée totale d'exécution de la requête :2687 ms.
161  lignes récupérées.

SET from_collapse_limit TO 8;
SET join_collapse_limit TO 8;
explain analyse select mdmetadata0_.id as col_0_0_ from   public.md_metadata mdmetadata0_
inner join public.mf_metadata mdmetadata0_1_ on mdmetadata0_.id=mdmetadata0_1_.id
join public.content_info contentinf1_ on mdmetadata0_.id=contentinf1_.fk_metadata
left outer join public.mi_imagedesc contentinf1_1_ on contentinf1_.id=contentinf1_1_.id
left outer join public.mi_radarimagedesc contentinf1_2_ on contentinf1_.id=contentinf1_2_.id
left outer join public.mi_opticalimagedesc contentinf1_3_ on contentinf1_.id=contentinf1_3_.id
left outer join public.md_identification identifica2_ on mdmetadata0_.id=identifica2_.fk_md_metadata
left outer join public.md_dataidentification identifica2_1_ on identifica2_.id=identifica2_1_.id
join public.catalog_id catalogid3_ on identifica2_1_.fk_catalog_id=catalogid3_.id
join public.ex_temporalextent temporalex4_ on identifica2_.id=temporalex4_.fk_dataident
where contentinf1_1_.attribute_desc='DATASTRIP_SCENE'
and catalogid3_.profile='LEVEL0'
and (temporalex4_.begin_ between '2007-08-02' and '2007-08-30')



"Nested Loop  (cost=52157.93..85267.26 rows=1 width=22) (actual time=1865.156..4994.184 rows=154 loops=1)"
"  ->  Hash Join  (cost=52157.93..85266.60 rows=1 width=62) (actual time=1865.093..4990.764 rows=154 loops=1)"
"        Hash Cond: ((identifica2_.id)::text = (temporalex4_.fk_dataident)::text)"
"        ->  Hash Join  (cost=52141.56..84472.30 rows=207445 width=142) (actual time=1842.028..4870.900 rows=206718 loops=1)"
"              Hash Cond: ((mdmetadata0_1_.id)::text = (mdmetadata0_.id)::text)"
"              ->  Hash Left Join  (cost=42890.11..71257.93 rows=192868 width=186) (actual time=1543.397..4147.864 rows=206718 loops=1)"
"                    Hash Cond: ((contentinf1_.id)::text = (contentinf1_2_.id)::text)"
"                    ->  Hash Left Join  (cost=42877.41..70520.95 rows=192868 width=226) (actual time=1543.370..3930.902 rows=206718 loops=1)"
"                          Hash Cond: ((contentinf1_.id)::text = (contentinf1_3_.id)::text)"
"                          ->  Hash Join  (cost=35243.96..58789.05 rows=192868 width=226) (actual time=1251.403..3218.354 rows=206718 loops=1)"
"                                Hash Cond: ((identifica2_.id)::text = (identifica2_1_.id)::text)"
"                                ->  Hash Join  (cost=25911.51..45358.16 rows=192868 width=146) (actual time=921.434..2453.369 rows=206718 loops=1)"
"                                      Hash Cond: ((contentinf1_.id)::text = (contentinf1_1_.id)::text)"
"                                      ->  Hash Join  (cost=15000.19..30439.11 rows=207906 width=146) (actual time=601.957..1700.817 rows=223620 loops=1)"
"                                            Hash Cond: ((mdmetadata0_1_.id)::text = (contentinf1_.fk_metadata)::text)"
"                                            ->  Hash Join  (cost=7337.74..18181.87 rows=223620 width=84) (actual time=300.023..913.855 rows=223620 loops=1)"
"                                                  Hash Cond: ((identifica2_.fk_md_metadata)::text = (mdmetadata0_1_.id)::text)"
"                                                  ->  Seq Scan on md_identification identifica2_  (cost=0.00..6092.20 rows=223620 width=62) (actual time=0.024..136.218 rows=223620 loops=1)"
"                                                  ->  Hash  (cost=4331.22..4331.22 rows=240522 width=22) (actual time=299.878..299.878 rows=240522 loops=1)"
"                                                        ->  Seq Scan on mf_metadata mdmetadata0_1_  (cost=0.00..4331.22 rows=240522 width=22) (actual time=0.017..142.665 rows=240522 loops=1)"
"                                            ->  Hash  (cost=4867.20..4867.20 rows=223620 width=62) (actual time=301.820..301.820 rows=223620 loops=1)"
"                                                  ->  Seq Scan on content_info contentinf1_  (cost=0.00..4867.20 rows=223620 width=62) (actual time=0.027..139.955 rows=223620 loops=1)"
"                                      ->  Hash  (cost=8318.25..8318.25 rows=207445 width=40) (actual time=319.357..319.357 rows=206718 loops=1)"
"                                            ->  Seq Scan on mi_imagedesc contentinf1_1_  (cost=0.00..8318.25 rows=207445 width=40) (actual time=0.033..176.137 rows=206718 loops=1)"
"                                                  Filter: ((attribute_desc)::text = 'DATASTRIP_SCENE'::text)"
"                                ->  Hash  (cost=6537.20..6537.20 rows=223620 width=80) (actual time=329.914..329.914 rows=223620 loops=1)"
"                                      ->  Seq Scan on md_dataidentification identifica2_1_  (cost=0.00..6537.20 rows=223620 width=80) (actual time=0.030..158.099 rows=223620 loops=1)"
"                          ->  Hash  (cost=4838.20..4838.20 rows=223620 width=40) (actual time=291.851..291.851 rows=223620 loops=1)"
"                                ->  Seq Scan on mi_opticalimagedesc contentinf1_3_  (cost=0.00..4838.20 rows=223620 width=40) (actual time=0.026..136.670 rows=223620 loops=1)"
"                    ->  Hash  (cost=11.20..11.20 rows=120 width=90) (actual time=0.002..0.002 rows=0 loops=1)"
"                          ->  Seq Scan on mi_radarimagedesc contentinf1_2_  (cost=0.00..11.20 rows=120 width=90) (actual time=0.001..0.001 rows=0 loops=1)"
"              ->  Hash  (cost=6456.20..6456.20 rows=223620 width=22) (actual time=298.593..298.593 rows=223620 loops=1)"
"                    ->  Seq Scan on md_metadata mdmetadata0_  (cost=0.00..6456.20 rows=223620 width=22) (actual time=0.016..150.434 rows=223620 loops=1)"
"        ->  Hash  (cost=16.36..16.36 rows=1 width=40) (actual time=0.472..0.472 rows=172 loops=1)"
"              ->  Index Scan using ind_ex_temporalextent_begin_ on ex_temporalextent temporalex4_  (cost=0.00..16.36 rows=1 width=40) (actual time=0.081..0.292 rows=172 loops=1)"
"                    Index Cond: ((begin_ >= '2007-08-02 00:00:00'::timestamp without time zone) AND (begin_ <= '2007-08-30 00:00:00'::timestamp without time zone))"
"  ->  Index Scan using catalog_id_pkey on catalog_id catalogid3_  (cost=0.00..0.65 rows=1 width=40) (actual time=0.019..0.020 rows=1 loops=154)"
"        Index Cond: ((identifica2_1_.fk_catalog_id)::text = (catalogid3_.id)::text)"
"        Filter: ((profile)::text = 'LEVEL0'::text)"
"Total runtime: 5003.214 ms"

Hors ligne

#28 19/06/2009 18:11:41

gleu
Administrateur

Re : Besoin d'infos sur le resultat issu d'un explain

OK, donc il vous faut les deux si j'ai bien compris.


Guillaume.

Hors ligne

#29 19/06/2009 18:19:20

F.Chanson
Membre

Re : Besoin d'infos sur le resultat issu d'un explain

Oui,
je me demande si le cluster a une utilité !!! , j'ai un gros test de chargement au moins de juillet  sur cette base , passage de 200.000 enregs à 500.000 enregs donc  je vous informerais de l'utilité ou pas du cluster !!!!

Merci pour toutes vos informations qui ont été très précieuses.

A bientôt
Francis

Hors ligne

#30 19/06/2009 18:25:42

gleu
Administrateur

Re : Besoin d'infos sur le resultat issu d'un explain

Pourriez-vous venir commenter vos résultats en juillet ? ça ferait un bon feedback, particulièrement intéressant. Merci.


Guillaume.

Hors ligne

#31 19/06/2009 18:29:54

Marc Cousin
Membre

Re : Besoin d'infos sur le resultat issu d'un explain

Désolé, j'ai pas été clair tout à l'heure : c'est le join_collapse_limit qu'il faut modifier. le from_collapse_limit s'applique aux subselect, le join_collapse_limit aux jointures.

Je ne pense pas que le cluster serve a quelque chose, puisqu'on accède je pense à des enregistrements de cette table de façon un peu aléatoire. Le cluster est surtout très efficace pour des range scans.

Dernière modification par Marc Cousin (19/06/2009 18:32:38)


Marc.

Hors ligne

#32 19/06/2009 18:31:41

F.Chanson
Membre

Re : Besoin d'infos sur le resultat issu d'un explain

Naturellement
je vous fait un retour en juillet  sur le cluster et  from_collapse -  join_collapse

pour cela , je continue à répondre à ce message ou j'en ouvre un autre  ???

Hors ligne

#33 19/06/2009 18:41:34

gleu
Administrateur

Re : Besoin d'infos sur le resultat issu d'un explain

Sur ce message. Vu que c'est la suite, ça me paraît le plus logique... Merci à l'avance smile


Guillaume.

Hors ligne

#34 19/06/2009 18:44:20

F.Chanson
Membre

Re : Besoin d'infos sur le resultat issu d'un explain

merci et Bon week-end

A bientot

Hors ligne

Pied de page des forums