From: | Vivekanand Joshi <vjoshi(at)zetainteractive(dot)com> |
---|---|
To: | Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com> |
Cc: | pgsql-performance(at)postgresql(dot)org |
Subject: | Re: Performance issues |
Date: | 2015-03-16 18:32:19 |
Message-ID: | CANwLwati=vJNza17YAhHmPg8jfX+=g2VdKssPYb-6g2xEXVmsA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Hey guys, thanks a lot.
This is really helping. I am learning a lot. BTW, I changed CTE into
subquery and it improved the performance by miles. I am getting the result
in less than 3 seconds, though I am using a 24 GB ram server. It is still a
great turnaround time as compared to previous execution time.
Now I will look into the bigger query. I read explain analyze and that
helped a lot. I will be coming up with more questions tomorrow as bigger
query still has got some problems.
On 16 Mar 2015 23:55, "Tomas Vondra" <tomas(dot)vondra(at)2ndquadrant(dot)com> wrote:
> On 16.3.2015 18:49, Marc Mamin wrote:
> >
> >> Hi Team,
> >>
> >> This is the EXPLAIN ANALYZE for one of the view :
> S_V_D_CAMPAIGN_HIERARCHY:
>
> FWIW, this is a somewhat more readable version of the plan:
>
> http://explain.depesz.com/s/nbB
>
> In the future, please do two things:
>
> (1) Attach the plan as a text file, because the mail clients tend to
> screw things up (wrapping long lines). Unless the plan is trivial,
> of course - but pgsql-performance usually deals with complex stuff.
>
> (2) Put the plan on explain.depesz.com helps too, because it's
> considerably more readable (but always do 1, because resorces
> placed somewhere else tends to disappear, and the posts then make
> very little sense, which is bad when searching in the archives)
>
> (3) Same for stuff pasted somewhere else - always attach it to the
> message. For example I'd like to give you more accurate advice, but
> I can't as http://pgsql.privatepaste.com/41207bea45 is unavailable.
>
> >
> >
> > >Rows Removed by Join Filter: 3577676116
> >
> > That's quite a lot.
> > You're possibly missing a clause in a join, resulting in a cross
> join.
> > It is also helpful to put your result here:
> > http://explain.depesz.com/
> > regards,
>
> IMHO this is merely a consequence of using the CTE, which produces 52997
> rows and is scanned 67508x as the inner relation of a nested loop. That
> gives you 3577721476 tuples in total, and only 45360 are kept (hence
> 3577676116 are removed).
>
> This is a prime example of why CTEs are not just aliases for subqueries,
> but may actually cause serious trouble.
>
> There are other issues (e.g. the row count estimate of the CTE is
> seriously off, most likely because of the HashAggregate in the outer
> branch), but that's a secondary issue IMHO.
>
> Vivekanand, try this (in the order of intrusiveness):
>
> (1) Get rid of the CTE, and just replace it with subselect in the FROM
> part of the query, so instead of this:
>
> WITH valid_executions AS (...)
> SELECT ... FROM ... JOIN valid_executions ON (...)
>
> you'll have something like this:
>
> SELECT ... FROM ... JOIN (...) AS valid_executions ON (...)
>
> This way the subselect will optimized properly.
>
>
> (2) Replace the CTE with a materialized view, or a temporary table.
> This has both advantages and disadvantages - the main advantage is
> that you can create indexes, collect statistics. Disadvantage is
> you have to refresh the MV, fill temporary table etc.
>
> I expect (1) to improve the performance significantly, and (2) might
> improve it even further by fixing the misestimates.
>
>
> regards
>
> --
> Tomas Vondra http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>
>
> --
> Sent via pgsql-performance mailing list (pgsql-performance(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-performance
>
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2015-03-16 19:12:15 | Re: Bad cost estimate with FALSE filter condition |
Previous Message | Tom Lane | 2015-03-16 18:26:55 | Re: Bad cost estimate with FALSE filter condition |