On Tue, Jan 17, 2017 at 3:12 PM, Ravi Tammineni <
rtammin...@partner.aligntech.com> wrote:

> Hi Adrain,
>
> We have deployed our databases in Heroku and we have followed the upgrade
> option that they have provided to us. Here is the command.
>
> heroku pg:upgrade --app <app_name>
>
> I am not sure whether they are doing the vacuum after the upgrade or not.
> I have disabled the parallel execution; still execution plan is not correct.
>
>                                                           QUERY PLAN
> ------------------------------------------------------------
> -------------------------------------------------------------------
> Aggregate  (cost=3391172.70..3391172.71 rows=1 width=8)
>    ->  Nested Loop Semi Join  (cost=3218963.06..3391149.45 rows=46513
> width=0)
>          ->  Nested Loop  (cost=3218962.89..3343428.74 rows=46513 width=4)
>                ->  Hash Join  (cost=3218962.80..3323993.25 rows=46513
> width=4)
>                      Hash Cond: (os.order_status_history_id =
> osh.order_status_history_id)
>                      ->  Seq Scan on tblpuorderstatus os
> (cost=0.00..96501.53 rows=11185842 width=8)
>                      ->  Hash  (cost=3217108.89..3217108.89 rows=529689
> width=4)
>                            ->  Seq Scan on tblpuorderstatushistory osh
> (cost=0.00..3217108.89 rows=529689 width=4)
>                                  Filter: ((cancelled_date IS NULL) AND
> (cc_accept_date IS NOT NULL) AND (vip_order_type = 17))
>                ->  Index Scan using tblcnpatientordermap_pkey on
> tblcnpatientordermap po  (cost=0.09..0.41 rows=1 width=8)
>                      Index Cond: (vip_order_id = os.vip_order_id)
>          ->  Nested Loop Semi Join  (cost=0.17..1.02 rows=1 width=4)
>                ->  Index Scan using tblcndoctorpatientmap_pkey on
> tblcndoctorpatientmap d  (cost=0.09..0.39 rows=1 width=8)
>                      Index Cond: (vip_patient_id = po.vip_patient_id)
>                ->  Index Scan using tblcnaccounts_pkey on tblcnaccounts a
> (cost=0.08..0.36 rows=1 width=4)
>                      Index Cond: (master_user_id = d.master_user_id)
>                      Filter: ((user_name)::text = 'rdoyleda'::text)
> (17 rows)
>
> Thanks
> ravi
>
>
>
> -----Original Message-----
> From: Adrian Klaver [mailto:adrian.kla...@aklaver.com]
> Sent: Tuesday, January 17, 2017 11:42 AM
> To: Ravi Tammineni <rtammin...@partner.aligntech.com>;
> pgsql-ad...@postgresql.org; pgsql-general@postgresql.org;
> pgadmin-supp...@postgresql.org
> Subject: Re: [GENERAL] Queries are taking way longer in 9.6 than 9.5
>
> On 01/17/2017 11:31 AM, Ravi Tammineni wrote:
> > Hi,
> >
> >
> >
> > We have recently upgraded to 9.6 and few queries are performing very
> > poorly. Query execution time has increased more 4 or 5 times in 9.6.
> > Qeruy execution plan is also completely changed. I am not sure whether
> > its because of Parallel feature or any bug in 9.6. There are few
> > similar kind of queries and all of them are taking more time in 9.6.
>
> How did you upgrade from 9.5 --> 9.6?
>
> Did you run ANALYZE on the tables after the upgrade?
>
> Tend to doubt parallel query is at issue here, as it is turned off by
> default:
>
> https://www.postgresql.org/docs/9.6/static/runtime-config-
> resource.html#GUC-MAX-PARALLEL-WORKERS-PER-GATHER
>
> For more info:
>
> https://www.postgresql.org/docs/9.6/static/parallel-query.html
> >
> >
> >
> > Following query is taking 70ms in 9.5 and the same query is taking 2
> > minutes in 9.6. Execution plan is totally different in 9.6 and seems
> > like there is a major flaw while generating the execution plan.
> > Instead of filtering the low cardinality, its filtering from biggest
> table.
> > Somehow nested loop joins are screwed up.
> >
> >
> >
> >
> >
> > I really appreciate your help.
> >
> >
> >
> > explain analyze
> >
> > SELECT count(*)
> >
> > FROM
> >
> >     tblCnPatientOrderMap po
> >
> >     JOIN tblPuOrderStatus os ON po.vip_order_id = os.vip_order_id
> >
> >     JOIN tblPuOrderStatusHistory osh ON os.order_status_history_id =
> > osh.order_status_history_id
> >
> > WHERE
> >
> >     exists(SELECT 1
> >
> >            FROM
> >
> >                tblCnDoctorPatientMap d
> >
> >            WHERE d.vip_patient_id = po.vip_patient_id
> >
> >                  AND exists(SELECT 1
> >
> >                             FROM
> >
> >                                 tblCnAccounts a
> >
> >                             WHERE a.master_user_id = d.master_user_id
> > AND
> >
> >                                   a.user_name = 'dddddd'))
> >
> >     AND osh.vip_order_type IN (17)--assist
> >
> >     --AND osh.tx_submit_date IS NOT NULL
> >
> >     AND osh.cancelled_date IS NULL
> >
> >     AND osh.cc_accept_date IS NOT NULL;
> >
> >
> >
> >
> >
> > ##########################  9.5 Execution plan
> >
> >
> >
> >
> > QUERY PLAN
> >
> > ----------------------------------------------------------------------
> > ----------------------------------------------------------------------
> > ---------
> >
> > Aggregate  (cost=1177.25..1177.26 rows=1 width=0)
> >
> >    ->  Nested Loop  (cost=67.83..1177.25 rows=5 width=0)
> >
> >          ->  Nested Loop  (cost=67.71..254.81 rows=1322 width=4)
> >
> >                ->  Nested Loop  (cost=67.63..104.45 rows=1322 width=4)
> >
> >                      ->  HashAggregate  (cost=67.54..68.12 rows=192
> > width=4)
> >
> >                            Group Key: d.vip_patient_id
> >
> >
> >
> >                            ->  Nested Loop  (cost=0.17..67.44 rows=192
> > width=4)
> >
> >                                  ->  Index Scan using unq_user_name on
> > tblcnaccounts a  (cost=0.08..4.09 rows=1 width=4)
> >
> >                                        Index Cond: ((user_name)::text
> > =
> > 'dddddd'::text)
> >
> >
> >
> >                                  ->  Index Only Scan using
> > idx_tblcndoctorpatientmap on tblcndoctorpatientmap d
> > (cost=0.09..62.78
> > rows=192 width=8)
> >
> >                                        Index Cond: (master_user_id =
> > a.master_user_id)
> >
> >                      ->  Index Scan using idx_tblcnpatientordermap on
> > tblcnpatientordermap po  (cost=0.09..0.17 rows=7 width=8)
> >
> >                            Index Cond: (vip_patient_id =
> > d.vip_patient_id)
> >
> >                ->  Index Scan using tblpuorderstatus_pkey on
> > tblpuorderstatus os  (cost=0.09..0.11 rows=1 width=8)
> >
> >                      Index Cond: (vip_order_id = po.vip_order_id)
> >
> >          ->  Index Scan using tblpuorderstatushistory_pkey on
> > tblpuorderstatushistory osh  (cost=0.11..0.69 rows=1 width=4)
> >
> >                Index Cond: (order_status_history_id =
> > os.order_status_history_id)
> >
> >                Filter: ((cancelled_date IS NULL) AND (cc_accept_date
> > IS NOT NULL) AND (vip_order_type = 17))
> >
> >
> >
> > ######################################################################
> > ###############################################################
> >
> >
> >
> > ##########################  9.6 Execution plan
> >
> >                                                              QUERY
> > PLAN
> >
> > ----------------------------------------------------------------------
> > ---------------------------------------------------------------
> >
> > Aggregate  (cost=3185034.17..3185034.17 rows=1 width=8)
> >
> >    ->  Nested Loop Semi Join  (cost=3012833.92..3185010.91 rows=46511
> > width=0)
> >
> >
> >
> >          ->  Nested Loop  (cost=3012833.75..3137291.51 rows=46511
> > width=4)
> >
> >
> >
> >                ->  Hash Join  (cost=3012833.67..3117860.77 rows=46511
> > width=4)
> >
> >                      Hash Cond: (os.order_status_history_id =
> > osh.order_status_history_id)
> >
> >
> >
> >                      ->  Seq Scan on tblpuorderstatus os
> > (cost=0.00..96498.46 rows=11185486 width=8)
> >
> >                      ->  Hash  (cost=3010979.77..3010979.77
> > rows=529686
> > width=4)
> >
> >                            ->  Gather  (cost=1000.00..3010979.77
> > rows=529686 width=4)
> >
> >                                  Workers Planned: 2
> >
> >                                  ->  Parallel Seq Scan on
> > tblpuorderstatushistory osh  (cost=0.00..2957011.17 rows=220702
> > width=4)
> >
> >
> >
> >                                        Filter: ((cancelled_date IS
> > NULL) AND (cc_accept_date IS NOT NULL) AND (vip_order_type = 17))
> >
> >
> >
> >                ->  Index Scan using tblcnpatientordermap_pkey on
> > tblcnpatientordermap po  (cost=0.09..0.41 rows=1 width=8)
> >
> >
> >
> >                      Index Cond: (vip_order_id = os.vip_order_id)
> >
> >
> >
> >          ->  Nested Loop Semi Join  (cost=0.17..1.02 rows=1 width=4)
> >
> >                ->  Index Scan using tblcndoctorpatientmap_pkey on
> > tblcndoctorpatientmap d  (cost=0.09..0.39 rows=1 width=8)
> >
> >                      Index Cond: (vip_patient_id = po.vip_patient_id)
> >
> >                ->  Index Scan using tblcnaccounts_pkey on
> > tblcnaccounts a  (cost=0.08..0.36 rows=1 width=4)
> >
> >                      Index Cond: (master_user_id = d.master_user_id)
> >
> >                      Filter: ((user_name)::text = 'dddddd'::text)
> >
> > (19 rows)
> >
> >
> >
> >
> >
> > Regards,
> >
> > ravi
> >
>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

>I am not sure whether they are doing the vacuum after the upgrade or not
So just run an ANALYZE on the database!








-- 
*Melvin Davidson*
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

Reply via email to