Re: Unexpected query plan results - Mailing list pgsql-performance
From | Anne Rosset |
---|---|
Subject | Re: Unexpected query plan results |
Date | |
Msg-id | 4A20544D.9070504@collab.net Whole thread Raw |
In response to | Re: Unexpected query plan results ("Dave Dutcher" <dave@tridecap.com>) |
Responses |
Re: Unexpected query plan results
|
List | pgsql-performance |
Dave Dutcher wrote: >>From: Anne Rosset >>Subject: Re: [PERFORM] Unexpected query plan results >> >> >>> >>> >>> >>> >>Thank Dave. We are using postgresql-server-8.2.4-1PGDG and >>have work-mem set to 20MB. >>What value would you advise? >>thanks, >> >>Anne >> >> > > >Work-mem is kind of tricky because the right setting depends on how much ram >your machine has, is the machine dedicated to postgres, and how many >simultaneous connections you have. If this is a test server, and not used >in production, you could just play around with the setting and see if your >query gets any faster. > >Here are the docs on work mem > >http://www.postgresql.org/docs/8.2/interactive/runtime-config-resource.html# >RUNTIME-CONFIG-RESOURCE-MEMORY > > > Thanks Dave. The result with enable_sort=false is much better (at least the left join is not having better result): Now I am getting a 4s runtime. ( I also got the same performance by setting enable_mergejoin to false). Do you see anything I could do to make it faster? When the query plan takes a wrong path, is it possible that it is because statistics have not been run or updated? Thanks Anne QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------- Hash Join (cost=9276.24..100313.55 rows=1 width=155) (actual time=168.148..4144.595 rows=71 loops=1) Hash Cond: ((folder.project_id)::text = (project.id)::text) -> Nested Loop (cost=9271.96..100302.44 rows=1819 width=167) (actual time=168.080..4144.363 rows=71 loops=1) -> Index Scan using folder_pk on folder (cost=0.00..4.35 rows=1 width=26) (actual time=0.029..0.032 rows=1 loops=1) Index Cond: ('tracker3641'::text = (id)::text) Filter: ((path)::text = 'tracker.perf_test'::text) -> Nested Loop (cost=9271.96..100279.90 rows=1819 width=168) (actual time=168.045..4144.249 rows=71 loops=1) -> Nested Loop (cost=9271.96..99724.69 rows=1819 width=150) (actual time=168.028..4143.126 rows=71 loops=1) -> Nested Loop (cost=9271.96..99198.39 rows=1819 width=132) (actual time=168.008..4141.973 rows=71 loops=1) -> Nested Loop (cost=9271.96..98543.72 rows=1819 width=131) (actual time=167.989..4140.718 rows=71 loops=1) -> Nested Loop (cost=9271.96..97889.05 rows=1819 width=144) (actual time=167.971..4139.482 rows=71 loops=1) -> Nested Loop (cost=9271.96..97234.38 rows=1819 width=157) (actual time=167.943..4137.998 rows=71 loops=1) -> Nested Loop (cost=9271.96..92431.80 rows=2796 width=158) (actual time=167.893..4136.297 rows=71 loops=1) -> Hash Join (cost=9271.96..42281.07 rows=66876 width=70) (actual time=125.019..782.122 rows=184378 loops=1) Hash Cond: ((artifact.status_fv)::text = (field_value2.id)::text) -> Seq Scan on artifact (cost=0.00..25206.14 rows=475614 width=69) (actual time=0.006..211.907 rows=468173 loops=1 ) -> Hash (cost=8285.92..8285.92 rows=78883 width=27) (actual time=124.929..124.929 rows=79488 loops=1) -> Index Scan using field_class_idx on field_value field_value2 (cost=0.00..8285.92 rows=78883 width=27) (ac tual time=0.040..60.861 rows=79488 loops=1) Index Cond: ((value_class)::text = 'Open'::text) -> Index Scan using item_pk on item (cost=0.00..0.74 rows=1 width=88) (actual time=0.018..0.018 rows=0 loops=184378) Index Cond: ((artifact.id)::text = (item.id)::text) Filter: ((NOT is_deleted) AND ((folder_id)::text = 'tracker3641'::text)) -> Index Scan using relation_target on relationship (cost=0.00..1.71 rows=1 width=25) (actual time=0.021..0.022 rows=1 loops=7 1) Index Cond: ((artifact.id)::text = (relationship.target_id)::text) Filter: ((NOT is_deleted) AND ((relationship_type_name)::text = 'ArtifactAssignment'::text)) -> Index Scan using field_value_pk on field_value field_value4 (cost=0.00..0.35 rows=1 width=13) (actual time=0.018..0.019 rows=1 lo ops=71) Index Cond: ((artifact.customer_fv)::text = (field_value4.id)::text) -> Index Scan using field_value_pk on field_value (cost=0.00..0.35 rows=1 width=13) (actual time=0.015..0.015 rows=1 loops=71) Index Cond: ((artifact.group_fv)::text = (field_value.id)::text) -> Index Scan using field_value_pk on field_value field_value3 (cost=0.00..0.35 rows=1 width=27) (actual time=0.015..0.015 rows=1 loops=71) Index Cond: ((artifact.category_fv)::text = (field_value3.id)::text) -> Index Scan using sfuser_pk on sfuser sfuser2 (cost=0.00..0.28 rows=1 width=42) (actual time=0.013..0.014 rows=1 loops=71) Index Cond: ((relationship.origin_id)::text = (sfuser2.id)::text) -> Index Scan using sfuser_pk on sfuser (cost=0.00..0.29 rows=1 width=42) (actual time=0.013..0.014 rows=1 loops=71) Index Cond: ((item.created_by_id)::text = (sfuser.id)::text) -> Hash (cost=4.27..4.27 rows=1 width=12) (actual time=0.047..0.047 rows=1 loops=1) -> Index Scan using project_path on project (cost=0.00..4.27 rows=1 width=12) (actual time=0.041..0.043 rows=1 loops=1) Index Cond: ((path)::text = 'projects.gl_coconet_performance_improveme'::text) Total runtime: 4146.198 ms (39 rows)
pgsql-performance by date: