Re: Same query taking less time in low configuration machine

2020-07-16 Thread Justin Pryzby
On Thu, Jul 16, 2020 at 09:13:45PM +0530, Vishwa Kalyankar wrote:
> Hi,
> 
> I have two machines - one with 8GB RAM & 4core CPU and the other with 64GB
> Ram & 24 core CPU.  Both machines have the same DB (Postgres 12 + Postgis
> 2.5.3).  Same query is taking less time in low end machine whereas more
> time in high end machine.  Any thoughts on where to look?  I have tuned the

When  you say "the same DB" what do you mean ?
Is one a pg_dump and restore of the other ?
Or a physical copy like rsync/tar of the data dir ?

>   Please find the attachment for query explain & analyze and bonnie result
> of  both the machines.

Are the DB settings the ame or how do they differ ?

Maybe you could send explain(analyze,buffers,timing,settings) ?
https://wiki.postgresql.org/wiki/Slow_Query_Questions

-- 
Justin




Re: Same query taking less time in low configuration machine

2020-07-16 Thread Vishwa Kalyankar
Hi Justin,

   I tried both the way, pg_dump and rsync of complete data_directory, but
the result is same.

Both the db's configurations are not same, I have tuned the db in both
machines according to https://pgtune.leopard.in.ua/#/

Below is the result of explain (analyze, buffer, settings) of both the db's.

High End Machine

IPDS_KSEB=# set track_io_timing TO on;
SET
IPDS_KSEB=# explain (analyze,buffers, settings) select * from
kseb_geometry_trace_with_barrier_partition(5,'kottarakara_version',437,'htline',2)
;

QUERY PLAN

-
--
 Function Scan on kseb_geometry_trace_with_barrier_partition
 (cost=0.25..10.25 rows=1000 width=169) (actual time=24708.020..24708.048
rows=254 loops=1)
   Buffers: shared hit=254235 read=1484
   I/O Timings: read=827.509
 Settings: effective_cache_size = '30GB', effective_io_concurrency = '2',
max_parallel_workers = '24', max_parallel_workers_per_gather = '4',
search_path = '
"$user", public, topology', work_mem = '10MB'
 Planning Time: 0.064 ms
 Execution Time: 24772.587 ms
(6 rows)

Low End Machine
IPDS_KSEB=# explain (analyze,buffers, settings) select * from
kseb_geometry_trace_with_barrier_partition(5,'kottarakara_version',437,'htline',2)
;

 QUERY PLAN
-
 Function Scan on kseb_geometry_trace_with_barrier_partition
 (cost=0.25..10.25 rows=1000 width=169) (actual time=21870.311..21870.344
rows=389 loops=1)
   Buffers: shared hit=774945
 Settings: search_path = '"$user", public, topology'
 Planning Time: 0.089 ms
 Execution Time: 21870.406 ms
(5 rows)





On Thu, Jul 16, 2020 at 9:34 PM Justin Pryzby  wrote:

> On Thu, Jul 16, 2020 at 09:13:45PM +0530, Vishwa Kalyankar wrote:
> > Hi,
> >
> > I have two machines - one with 8GB RAM & 4core CPU and the other with
> 64GB
> > Ram & 24 core CPU.  Both machines have the same DB (Postgres 12 + Postgis
> > 2.5.3).  Same query is taking less time in low end machine whereas more
> > time in high end machine.  Any thoughts on where to look?  I have tuned
> the
>
> When  you say "the same DB" what do you mean ?
> Is one a pg_dump and restore of the other ?
> Or a physical copy like rsync/tar of the data dir ?
>
> >   Please find the attachment for query explain & analyze and bonnie
> result
> > of  both the machines.
>
> Are the DB settings the ame or how do they differ ?
>
> Maybe you could send explain(analyze,buffers,timing,settings) ?
> https://wiki.postgresql.org/wiki/Slow_Query_Questions
>
> --
> Justin
>


Re: Same query taking less time in low configuration machine

2020-07-16 Thread Justin Pryzby
On Thu, Jul 16, 2020 at 09:13:45PM +0530, Vishwa Kalyankar wrote:
> I have two machines - one with 8GB RAM & 4core CPU and the other with 64GB
> Ram & 24 core CPU.  Both machines have the same DB (Postgres 12 + Postgis

It looks like they're returning different number of rows, so definitely not the
same DB.

Also, they're performing about the same now...

It looks like you didn't set shared_buffers, even for a machine with 64GB RAM.
I think it's unusual to keep the default.

On Thu, Jul 16, 2020 at 10:21:35PM +0530, Vishwa Kalyankar wrote:
> Both the db's configurations are not same, I have tuned the db in both
> machines according to https://pgtune.leopard.in.ua/#/

It looks like your low-end machine has no settings at all ?
Did you forget to restart the server or use SET instead of ALTER SYSTEM SET ?

> IPDS_KSEB=# set track_io_timing TO on;
> IPDS_KSEB=# explain (analyze,buffers, settings) select * from 
> kseb_geometry_trace_with_barrier_partition(5,'kottarakara_version',437,'htline',2);
> 
>  Function Scan on kseb_geometry_trace_with_barrier_partition
>  (cost=0.25..10.25 rows=1000 width=169) (actual time=24708.020..24708.048 
> rows=254 loops=1)
>Buffers: shared hit=254235 read=1484
>I/O Timings: read=827.509
>  Settings: effective_cache_size = '30GB', effective_io_concurrency = '2', 
> max_parallel_workers = '24', max_parallel_workers_per_gather = '4', 
> search_path = '"$user", public, topology', work_mem = '10MB'
>  Planning Time: 0.064 ms
>  Execution Time: 24772.587 ms
> 
> Low End Machine
> IPDS_KSEB=# explain (analyze,buffers, settings) select * from 
> kseb_geometry_trace_with_barrier_partition(5,'kottarakara_version',437,'htline',2)
>  ;
>  Function Scan on kseb_geometry_trace_with_barrier_partition  
> (cost=0.25..10.25 rows=1000 width=169) (actual time=21870.311..21870.344 
> rows=389 loops=1)
>Buffers: shared hit=774945
>  Settings: search_path = '"$user", public, topology'
>  Planning Time: 0.089 ms
>  Execution Time: 21870.406 ms