Re: won't drop the view - Mailing list pgsql-sql

From Oleg Lebedev
Subject Re: won't drop the view
Date
Msg-id 3C293ACB.4BEBA02F@waterford.org
Whole thread Raw
In response to Re: won't drop the view  ("Josh Berkus" <josh@agliodbs.com>)
Responses Re: won't drop the view
List pgsql-sql
Thanks everybody for your help.
Deleting from pg_statistic restored view performance to the way it was
before I ran vacuum analyze.
Below I attach two files that contain explain statistics for the view before
(progress_report.txt) and after (progress_report_analyzed.txt) I ran vacuum
analyze. The first one takes about 15 secs. to complete, the second one
takes 12-13 minutes to complete.
I hope this will help you improve your query optimizer.
thanks,

Oleg

Tom Lane wrote:

> "Josh Berkus" <josh@agliodbs.com> writes:
> > Damn.  I can only really help with the obvious things, and you've
> > covered most of those.  That view should take a long time, given the
> > complexity ... but a long time is 30-60 seconds, not 10 minutes.
>
> I'm guessing it's ye olde stupid-choice-of-plan kind of problem.
> Unless I missed it, we have not been shown the plan currently being
> used (no, the first four lines don't do it for me...)
>
> You could probably get back to the previous, not-so-slow plan choice
> by doing "DELETE FROM pg_statistic" to remove the data collected by
> VACUUM ANALYZE.  A comparison of the EXPLAIN output in that state
> vs. the EXPLAIN output in the analyzed state might be enlightening.
>
>                         regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
execution time ~ 15sec.

NOTICE:  QUERY PLAN:

Subquery Scan progress_report  (cost=14648.65..14648.65 rows=4 width=128)
  ->  Sort  (cost=14648.65..14648.65 rows=4 width=128)
        ->  Merge Join  (cost=14644.00..14648.62 rows=4 width=128)
              ->  Sort  (cost=11.02..11.02 rows=2 width=48)
                    ->  Seq Scan on activity  (cost=0.00..11.00 rows=2 width=48)
              ->  Sort  (cost=14632.99..14632.99 rows=367 width=112)
                    ->  Subquery Scan media_acts  (cost=14553.17..14617.36 rows=367 width=112)
                          ->  Aggregate  (cost=14553.17..14617.36 rows=367 width=112)
                                ->  Group  (cost=14553.17..14562.34 rows=3668 width=112)
                                      ->  Sort  (cost=14553.17..14553.17 rows=3668 width=112)
                                            ->  Subquery Scan stats  (cost=13969.18..14336.00 rows=3668 width=112)
                                                  ->  Unique  (cost=13969.18..14336.00 rows=3668 width=112)
                                                        ->  Sort  (cost=13969.18..13969.18 rows=36682 width=112)
                                                              ->  Append  (cost=1.31..9744.33 rows=36682 width=112)
                                                                    ->  Subquery Scan *SELECT* 1  (cost=1.31..1154.05
rows=11459width=56) 
                                                                          ->  Hash Join  (cost=1.31..1154.05 rows=11459
width=56)
                                                                                ->  Seq Scan on media
(cost=0.00..407.59rows=11459 width=36) 
                                                                                ->  Hash  (cost=1.25..1.25 rows=25
width=20)
                                                                                      ->  Seq Scan on mediatypemap
(cost=0.00..1.25rows=25 width=20) 
                                                                    ->  Subquery Scan *SELECT* 2
(cost=1313.31..4930.60rows=20704 width=80) 
                                                                          ->  Hash Join  (cost=1313.31..4930.60
rows=20704width=80) 
                                                                                ->  Hash Join  (cost=1283.70..3513.64
rows=21196width=64) 
                                                                                      ->  Seq Scan on intsetmedia
(cost=0.00..399.96rows=21196 width=16) 
                                                                                      ->  Hash  (cost=1154.05..1154.05
rows=11459width=48) 
                                                                                            ->  Hash Join
(cost=1.31..1154.05rows=11459 width=48) 
                                                                                                  ->  Seq Scan on media
(cost=0.00..407.59 rows=11459 width=28) 
                                                                                                  ->  Hash
(cost=1.25..1.25rows=25 width=20) 
                                                                                                        ->  Seq Scan on
mediatypemap (cost=0.00..1.25 rows=25 width=20) 
                                                                                ->  Hash  (cost=27.69..27.69 rows=769
width=16)
                                                                                      ->  Seq Scan on set
(cost=0.00..27.69rows=769 width=16) 
                                                                    ->  Subquery Scan *SELECT* 3
(cost=1469.06..3659.68rows=4519 width=112) 
                                                                          ->  Hash Join  (cost=1469.06..3659.68
rows=4519width=112) 
                                                                                ->  Hash Join  (cost=1467.74..3364.32
rows=4519width=92) 
                                                                                      ->  Hash Join
(cost=689.81..1978.41rows=4519 width=64) 
                                                                                            ->  Hash Join
(cost=585.40..1498.78rows=9148 width=32) 
                                                                                                  ->  Seq Scan on
dtrowmedia (cost=0.00..164.48 rows=9148 width=16) 
                                                                                                  ->  Hash
(cost=306.99..306.99rows=16799 width=16) 
                                                                                                        ->  Seq Scan on
dtrow (cost=0.00..306.99 rows=16799 width=16) 
                                                                                            ->  Hash
(cost=102.55..102.55rows=744 width=32) 
                                                                                                  ->  Hash Join
(cost=6.62..102.55rows=744 width=32) 
                                                                                                        ->  Seq Scan on
dtcol (cost=0.00..32.06 rows=1506 width=16) 
                                                                                                        ->  Hash
(cost=5.90..5.90rows=290 width=16) 
                                                                                                              ->  Seq
Scanon datatable  (cost=0.00..5.90 rows=290 width=16) 
                                                                                      ->  Hash  (cost=407.59..407.59
rows=11459width=28) 
                                                                                            ->  Seq Scan on media
(cost=0.00..407.59rows=11459 width=28) 
                                                                                ->  Hash  (cost=1.25..1.25 rows=25
width=20)
                                                                                      ->  Seq Scan on mediatypemap
(cost=0.00..1.25rows=25 width=20) 

EXPLAIN
execution time ~ 12-13 mins.

NOTICE:  QUERY PLAN:

Subquery Scan progress_report  (cost=14687.00..14687.00 rows=2 width=128)
  ->  Sort  (cost=14687.00..14687.00 rows=2 width=128)
        ->  Nested Loop  (cost=14605.17..14686.99 rows=2 width=128)
              ->  Seq Scan on activity  (cost=0.00..11.00 rows=1 width=48)
              ->  Subquery Scan media_acts  (cost=14605.17..14671.27 rows=378 width=112)
                    ->  Aggregate  (cost=14605.17..14671.27 rows=378 width=112)
                          ->  Group  (cost=14605.17..14614.61 rows=3777 width=112)
                                ->  Sort  (cost=14605.17..14605.17 rows=3777 width=112)
                                      ->  Subquery Scan stats  (cost=14003.05..14380.75 rows=3777 width=112)
                                            ->  Unique  (cost=14003.05..14380.75 rows=3777 width=112)
                                                  ->  Sort  (cost=14003.05..14003.05 rows=37771 width=112)
                                                        ->  Append  (cost=1.31..9627.85 rows=37771 width=112)
                                                              ->  Subquery Scan *SELECT* 1  (cost=1.31..1154.05
rows=11459width=56) 
                                                                    ->  Hash Join  (cost=1.31..1154.05 rows=11459
width=56)
                                                                          ->  Seq Scan on media  (cost=0.00..407.59
rows=11459width=36) 
                                                                          ->  Hash  (cost=1.25..1.25 rows=25 width=20)
                                                                                ->  Seq Scan on mediatypemap
(cost=0.00..1.25rows=25 width=20) 
                                                              ->  Subquery Scan *SELECT* 2  (cost=1313.31..4930.60
rows=21196width=80) 
                                                                    ->  Hash Join  (cost=1313.31..4930.60 rows=21196
width=80)
                                                                          ->  Hash Join  (cost=1283.70..3513.64
rows=21196width=64) 
                                                                                ->  Seq Scan on intsetmedia
(cost=0.00..399.96rows=21196 width=16) 
                                                                                ->  Hash  (cost=1154.05..1154.05
rows=11459width=48) 
                                                                                      ->  Hash Join
(cost=1.31..1154.05rows=11459 width=48) 
                                                                                            ->  Seq Scan on media
(cost=0.00..407.59rows=11459 width=28) 
                                                                                            ->  Hash  (cost=1.25..1.25
rows=25width=20) 
                                                                                                  ->  Seq Scan on
mediatypemap (cost=0.00..1.25 rows=25 width=20) 
                                                                          ->  Hash  (cost=27.69..27.69 rows=769
width=16)
                                                                                ->  Seq Scan on set  (cost=0.00..27.69
rows=769width=16) 
                                                              ->  Subquery Scan *SELECT* 3  (cost=1993.99..3543.20
rows=5116width=112) 
                                                                    ->  Hash Join  (cost=1993.99..3543.20 rows=5116
width=112)
                                                                          ->  Hash Join  (cost=1992.68..3209.05
rows=5116width=92) 
                                                                                ->  Seq Scan on media
(cost=0.00..407.59rows=11459 width=28) 
                                                                                ->  Hash  (cost=1979.89..1979.89
rows=5116width=64) 
                                                                                      ->  Hash Join
(cost=690.05..1979.89rows=5116 width=64) 
                                                                                            ->  Hash Join
(cost=585.40..1498.78rows=9148 width=32) 
                                                                                                  ->  Seq Scan on
dtrowmedia (cost=0.00..164.48 rows=9148 width=16) 
                                                                                                  ->  Hash
(cost=306.99..306.99rows=16799 width=16) 
                                                                                                        ->  Seq Scan on
dtrow (cost=0.00..306.99 rows=16799 width=16) 
                                                                                            ->  Hash
(cost=102.55..102.55rows=842 width=32) 
                                                                                                  ->  Hash Join
(cost=6.62..102.55rows=842 width=32) 
                                                                                                        ->  Seq Scan on
dtcol (cost=0.00..32.06 rows=1506 width=16) 
                                                                                                        ->  Hash
(cost=5.90..5.90rows=290 width=16) 
                                                                                                              ->  Seq
Scanon datatable  (cost=0.00..5.90 rows=290 width=16) 
                                                                          ->  Hash  (cost=1.25..1.25 rows=25 width=20)
                                                                                ->  Seq Scan on mediatypemap
(cost=0.00..1.25rows=25 width=20) 

EXPLAIN

pgsql-sql by date:

Previous
From: "Juan Riera"
Date:
Subject: Re: PostgreSQL SELECT error
Next
From: Tom Lane
Date:
Subject: Re: won't drop the view