Re: 7.3.2 vs 7.1.2 - Mailing list pgsql-performance

From Eugene Fokin
Subject Re: 7.3.2 vs 7.1.2
Date
Msg-id 20030520132842.GA29262@solvo.ru
Whole thread Raw
In response to Re: 7.3.2 vs 7.1.2  ("Victor Yegorov" <viktors.jegorovs@nordlb.lv>)
Responses Re: 7.3.2 vs 7.1.2
Re: 7.3.2 vs 7.1.2
List pgsql-performance
On Tue, May 20, 2003 at 04:09:13PM +0300, Victor Yegorov wrote:

> Please, attach both: query and explain analyze results.
> Results of:
>
> => select version();
>
> are welcomed too.

Ok.
btw, it works on 7.2.1 fine to me too (as 7.1.2).

\d loadview:

                  View "public.loadview"
      Column       |           Type           | Modifiers
-------------------+--------------------------+-----------
 id                | integer                  |
 parent_load_id    | integer                  |
 name              | character varying(10)    |
 code_id           | integer                  |
 rcn_id            | integer                  |
 loc_id            | integer                  |
 real_loc_id       | integer                  |
 dest_id           | integer                  |
 order_id          | integer                  |
 last_comment      | character varying        |
 label             | character varying(20)    |
 type              | character varying(1)     |
 qty               | integer                  |
 qty_type          | character varying(1)     |
 units             | integer                  |
 assigned          | integer                  |
 visible           | boolean                  |
 status            | character varying(1)     |
 sort              | integer                  |
 dest_status       | character varying(1)     |
 date_pour         | date                     |
 akciz_name        | text                     |
 is_ub             | boolean                  |
 is_toll           | boolean                  |
 has_receiving     | boolean                  |
 has_ub            | boolean                  |
 has_custom        | boolean                  |
 has_akciz         | boolean                  |
 owner_id          | integer                  |
 receive_type      | character varying(1)     |
 region_units      | integer                  |
 msk_units         | integer                  |
 town_units        | integer                  |
 date_last_counted | timestamp with time zone |
 counted_by        | character varying(32)    |
 date_last_access  | timestamp with time zone |
 accessed_by       | character varying(32)    |
 created           | timestamp with time zone |
 created_by        | character varying(32)    |
 sku_name          | character varying        |
 real_loc          | integer                  |
 loc_type          | character varying        |
View definition: SELECT l.id, l.parent_load_id, l.name, l.code_id, l.rcn_id, l.loc_id, l.real_loc_id, l.dest_id, CASE
WHEN(EXISTS (SELECT orders.id FROM orders WHERE (orders.id = l.order_id))) THEN l.order_id ELSE 0 END AS order_id,
(SELECTlc."comment" FROM load_comments lc WHERE (lc.id = l.last_comment_id)) AS last_comment, l.label, l."type", l.qty,
l.qty_type,l.units, l.assigned, l.visible, l.status, l.sort, l.dest_status, r.date_pour, ad.name AS akciz_name,
l.is_ub,l.is_toll, l.has_receiving, l.has_ub, l.has_custom, l.has_akciz, l.owner_id, l.receive_type, l.region_units,
l.msk_units,l.town_units, l.date_last_counted, l.counted_by, l.date_last_access, l.accessed_by, l.created,
l.created_by,(SELECT s.name FROM sku s, code_info c WHERE ((s.id = c.sku_id) AND (c.id = l.code_id))) AS sku_name,
l.real_loc_idAS real_loc, (SELECT loc."type" FROM "location" loc WHERE (loc.id = l.real_loc_id)) AS loc_type FROM
(((loadsl JOIN (SELECT rcn_details.id, rcn_details.date_pour FROM rcn_details) r ON ((r.id = l.rcn_id))) LEFT JOIN
(SELECTmin(akciz.id) AS id, akciz.rcn_id FROM akciz GROUP BY akciz.rcn_id) ah ON ((ah.rcn_id = l.rcn_id))) LEFT JOIN
(SELECTmax((akciz_details.name)::text) AS name, akciz_details.akciz_id FROM akciz_details GROUP BY
akciz_details.akciz_id)ad ON ((ad.akciz_id = ah.id))); 

7.2.1:
select version ():
       "PostgreSQL 7.2.1 on i686-pc-linux-gnu, compiled by GCC 2.96"

explain analyze select count(*) from loadview:

NOTICE:  QUERY PLAN:

Aggregate  (cost=49464.29..49464.29 rows=1 width=20) (actual time=4823.05..4823.05 rows=1 loops=1)
  ->  Merge Join  (cost=36149.36..47306.99 rows=862919 width=20) (actual time=4081.67..4699.48 rows=147281 loops=1)
        ->  Sort  (cost=35013.94..35013.94 rows=147281 width=16) (actual time=3851.65..3919.07 rows=147281 loops=1)
              ->  Merge Join  (cost=1098.11..22371.18 rows=147281 width=16) (actual time=196.80..3001.89 rows=147281
loops=1)
                    ->  Merge Join  (cost=0.00..19885.60 rows=147281 width=8) (actual time=0.08..2059.89 rows=147281
loops=1)
                          ->  Index Scan using load_rcn_id_idx on loads l  (cost=0.00..17026.36 rows=147281 width=4)
(actualtime=0.04..786.13 rows=147281 loops=1) 
                          ->  Index Scan using rcn_detail_idx on rcn_details  (cost=0.00..618.30 rows=12692 width=4)
(actualtime=0.03..510.13 rows=151332 loops=1) 
                    ->  Sort  (cost=1098.11..1098.11 rows=1161 width=8) (actual time=196.68..273.26 rows=140535
loops=1)
                          ->  Subquery Scan ah  (cost=980.95..1039.00 rows=1161 width=8) (actual time=73.79..167.89
rows=11497loops=1) 
                                ->  Aggregate  (cost=980.95..1039.00 rows=1161 width=8) (actual time=73.78..145.90
rows=11497loops=1) 
                                      ->  Group  (cost=980.95..1009.98 rows=11610 width=8) (actual time=73.76..115.53
rows=11610loops=1) 
                                            ->  Sort  (cost=980.95..980.95 rows=11610 width=8) (actual
time=73.75..78.99rows=11610 loops=1) 
                                                  ->  Seq Scan on akciz  (cost=0.00..197.10 rows=11610 width=8) (actual
time=0.01..26.24rows=11610 loops=1) 
        ->  Sort  (cost=1135.43..1135.43 rows=1172 width=15) (actual time=229.97..308.41 rows=140648 loops=1)
              ->  Subquery Scan ad  (cost=1017.11..1075.70 rows=1172 width=15) (actual time=94.52..200.64 rows=11610
loops=1)
                    ->  Aggregate  (cost=1017.11..1075.70 rows=1172 width=15) (actual time=94.51..179.57 rows=11610
loops=1)
                          ->  Group  (cost=1017.11..1046.40 rows=11718 width=15) (actual time=94.49..135.00 rows=11718
loops=1)
                                ->  Sort  (cost=1017.11..1017.11 rows=11718 width=15) (actual time=94.47..101.80
rows=11718loops=1) 
                                      ->  Seq Scan on akciz_details  (cost=0.00..225.18 rows=11718 width=15) (actual
time=0.03..30.11rows=11718 loops=1) 
Total runtime: 4878.56 msec

7.3.2:
select version():
       "PostgreSQL 7.3.2 on i386-redhat-linux-gnu, compiled by GCC i386-redhat-linux-gcc (GCC) 3.2.2 20030213 (Red Hat
Linux8.0 3.2.2-1)" 

       Also, I've tried 7.3.2 version binaries from PostgreSQL site for RH73.
       And I've got the same result.

explain analyze select count(*) from loadview:

                                                                                  QUERY PLAN
                                                      

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost=57642.48..57642.48 rows=1 width=233) (actual time=43799.03..43799.03 rows=1 loops=1)
   ->  Subquery Scan loadview  (cost=43956.42..55485.18 rows=862919 width=233) (actual time=28013.35..43638.75
rows=147281loops=1) 
         ->  Merge Join  (cost=43956.42..55485.18 rows=862919 width=233) (actual time=28013.35..43409.03 rows=147281
loops=1)
               Merge Cond: ("outer".id = "inner".akciz_id)
               ->  Sort  (cost=42797.70..43165.90 rows=147281 width=197) (actual time=27785.80..28126.86 rows=147281
loops=1)
                     Sort Key: ah.id
                     ->  Merge Join  (cost=1115.13..22038.07 rows=147281 width=197) (actual time=133.98..14205.66
rows=147281loops=1) 
                           Merge Cond: ("outer".rcn_id = "inner".rcn_id)
                           ->  Merge Join  (cost=0.00..19524.78 rows=147281 width=189) (actual time=0.14..9419.68
rows=147281loops=1) 
                                 Merge Cond: ("outer".rcn_id = "inner".id)
                                 ->  Index Scan using load_rcn_id_idx on loads l  (cost=0.00..16659.18 rows=147281
width=181)(actual time=0.07..4486.76 rows=147281 loops=1) 
                                 ->  Index Scan using rcn_detail_idx on rcn_details  (cost=0.00..624.96 rows=12692
width=8)(actual time=0.02..587.84 rows=151332 loops=1) 
                           ->  Sort  (cost=1115.13..1118.03 rows=1161 width=8) (actual time=133.74..214.17 rows=140535
loops=1)
                                 Sort Key: ah.rcn_id
                                 ->  Subquery Scan ah  (cost=968.95..1056.03 rows=1161 width=8) (actual
time=46.03..115.21rows=11497 loops=1) 
                                       ->  Aggregate  (cost=968.95..1056.03 rows=1161 width=8) (actual
time=46.02..100.01rows=11497 loops=1) 
                                             ->  Group  (cost=968.95..1027.00 rows=11610 width=8) (actual
time=46.00..76.80rows=11610 loops=1) 
                                                   ->  Sort  (cost=968.95..997.98 rows=11610 width=8) (actual
time=45.99..50.45rows=11610 loops=1) 
                                                         Sort Key: rcn_id
                                                         ->  Seq Scan on akciz  (cost=0.00..185.10 rows=11610 width=8)
(actualtime=0.01..19.09 rows=11610 loops=1) 
               ->  Sort  (cost=1158.72..1161.65 rows=1172 width=15) (actual time=227.16..332.79 rows=140648 loops=1)
                     Sort Key: ad.akciz_id
                     ->  Subquery Scan ad  (cost=1011.11..1098.99 rows=1172 width=15) (actual time=80.77..188.32
rows=11610loops=1) 
                           ->  Aggregate  (cost=1011.11..1098.99 rows=1172 width=15) (actual time=80.76..158.60
rows=11610loops=1) 
                                 ->  Group  (cost=1011.11..1069.70 rows=11718 width=15) (actual time=80.73..124.73
rows=11718loops=1) 
                                       ->  Sort  (cost=1011.11..1040.40 rows=11718 width=15) (actual time=80.71..88.88
rows=11718loops=1) 
                                             Sort Key: akciz_id
                                             ->  Seq Scan on akciz_details  (cost=0.00..219.18 rows=11718 width=15)
(actualtime=0.03..28.57 rows=11718 loops=1) 
               SubPlan
                 ->  Index Scan using orders_id_idx on orders  (cost=0.00..5.92 rows=1 width=4) (actual time=0.01..0.01
rows=1loops=147281) 
                       Index Cond: (id = $0)
                 ->  Index Scan using load_comments_id_idx on load_comments lc  (cost=0.00..5.90 rows=1 width=10)
(actualtime=0.01..0.01 rows=0 loops=147281) 
                       Index Cond: (id = $1)
                 ->  Nested Loop  (cost=0.00..11.08 rows=1 width=59) (actual time=0.02..0.03 rows=1 loops=147281)
                       ->  Index Scan using code_id_idx on code_info c  (cost=0.00..5.07 rows=1 width=4) (actual
time=0.01..0.01rows=1 loops=147281) 
                             Index Cond: (id = $2)
                       ->  Index Scan using sku_id_idx on sku s  (cost=0.00..6.00 rows=1 width=55) (actual
time=0.01..0.01rows=1 loops=147281) 
                             Index Cond: (s.id = "outer".sku_id)
                 ->  Index Scan using loc_g_id_idx on "location" loc  (cost=0.00..5.98 rows=1 width=5) (actual
time=0.01..0.01rows=1 loops=147281) 
                       Index Cond: (id = $3)
 Total runtime: 43825.44 msec
(41 rows)

--
Eugene Fokin
SOLVO Ltd. Company

pgsql-performance by date:

Previous
From: Rod Taylor
Date:
Subject: Re: 7.3.2 vs 7.1.2
Next
From: Victor Yegorov
Date:
Subject: Re: 7.3.2 vs 7.1.2