Thread: Postgresql planning time too high
Attachment
Hello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Hello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Hello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Could you run VACCUM ANALYZE.
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:46 PM
To: Fırat Güleç <firat.gulec@hepsijet.com>
Cc: pgsql-performance@lists.postgresql.org
Subject: Re[2]: Postgresql planning time too high
I did runned "VACCUM FULL" followed by "VACUUM" but no difference.
------ Original Message ------
From: "Fırat Güleç" <firat.gulec@hepsijet.com>
To: "Sterpu Victor" <victor@caido.ro>
Sent: 2019-11-22 1:35:15 PM
Subject: RE: Postgresql planning time too high
Hello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Have you run the ANALYZE command to update your DB statistics? I did runned "VACCUM FULL" followed by "VACUUM" but no difference.------ Original Message ------From: "Fırat Güleç" <firat.gulec@hepsijet.com>To: "Sterpu Victor" <victor@caido.ro>Sent: 2019-11-22 1:35:15 PMSubject: RE: Postgresql planning time too highHello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Could you run VACCUM ANALYZE.
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:46 PM
To: Fırat Güleç <firat.gulec@hepsijet.com>
Cc: pgsql-performance@lists.postgresql.org
Subject: Re[2]: Postgresql planning time too high
I did runned "VACCUM FULL" followed by "VACUUM" but no difference.
------ Original Message ------
From: "Fırat Güleç" <firat.gulec@hepsijet.com>
To: "Sterpu Victor" <victor@caido.ro>
Sent: 2019-11-22 1:35:15 PM
Subject: RE: Postgresql planning time too high
Hello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Could you run VACCUM ANALYZE.
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:46 PM
To: Fırat Güleç <firat.gulec@hepsijet.com>
Cc: pgsql-performance@lists.postgresql.org
Subject: Re[2]: Postgresql planning time too high
I did runned "VACCUM FULL" followed by "VACUUM" but no difference.
------ Original Message ------
From: "Fırat Güleç" <firat.gulec@hepsijet.com>
To: "Sterpu Victor" <victor@caido.ro>
Sent: 2019-11-22 1:35:15 PM
Subject: RE: Postgresql planning time too high
Hello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
No rows should be returned, DB is empty.I'm testing now on a empty DB trying to find out how to improve this.In this query I have 3 joins like this:SELECT t1.id, t2.valid_fromFROM t1JOIN t2 ON (t1.id_t1 = t1.id)LEFT JOIN t3 ON (t3.id_t1 = t1.id AND t3.valid_from<t2.valid_from)WHERE t3.id IS NULLIf I delete these 3 joins than the planning time goes down from 5.482 ms to 754.708 ms but I'm not sure why this context is so demanding on the planner.I'm tryng now to make a materialized view that will allow me to stop using the syntax above.I reattached the same files, they should be fine like this.------ Original Message ------From: "Fırat Güleç" <firat.gulec@hepsijet.com>To: "Sterpu Victor" <victor@caido.ro>Sent: 2019-11-22 1:35:15 PMSubject: RE: Postgresql planning time too highHello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
No rows should be returned, DB is empty.I'm testing now on a empty DB trying to find out how to improve this.In this query I have 3 joins like this:SELECT t1.id, t2.valid_fromFROM t1JOIN t2 ON (t1.id_t1 = t1.id)If I delete these 3 joins than the planning time goes down from 5.482 ms to 754.708 ms but I'm not sure why this context is so demanding on the planner.I'm tryng now to make a materialized view that will allow me to stop using the syntax above.
I reattached the same files, they should be fine like this.------ Original Message ------From: "Fırat Güleç" <firat.gulec@hepsijet.com>To: "Sterpu Victor" <victor@caido.ro>Sent: 2019-11-22 1:35:15 PMSubject: RE: Postgresql planning time too highHello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Test 1 | Test 2 | Test 3 | |
Test conditions | SHOW geqo: "on" SHOW geqo_threshold: "5" | SHOW geqo: "on" SHOW geqo_threshold: "12" | SHOW geqo: "off" |
Planning Time | 43691.910 ms | 5114.959 ms | 7305.504 ms |
Execution Time | 4.002 ms | 3.987 ms | 5.034 ms |
pá 22. 11. 2019 v 12:46 odesílatel Sterpu Victor <victor@caido.ro> napsal:No rows should be returned, DB is empty.I'm testing now on a empty DB trying to find out how to improve this.In this query I have 3 joins like this:SELECT t1.id, t2.valid_fromFROM t1JOIN t2 ON (t1.id_t1 = t1.id)If I delete these 3 joins than the planning time goes down from 5.482 ms to 754.708 ms but I'm not sure why this context is so demanding on the planner.I'm tryng now to make a materialized view that will allow me to stop using the syntax above.This query is little bit crazy - it has more than 40 joins - but 700ms for planning is looks too much. Maybe your comp has slow CPU.Postgres has two planners - deterministic and geneticProbably slow plan is related to deterministic planner.I reattached the same files, they should be fine like this.------ Original Message ------From: "Fırat Güleç" <firat.gulec@hepsijet.com>To: "Sterpu Victor" <victor@caido.ro>Sent: 2019-11-22 1:35:15 PMSubject: RE: Postgresql planning time too highHello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
pá 22. 11. 2019 v 12:46 odesílatel Sterpu Victor <victor@caido.ro> napsal:No rows should be returned, DB is empty.I'm testing now on a empty DB trying to find out how to improve this.In this query I have 3 joins like this:SELECT t1.id, t2.valid_fromFROM t1JOIN t2 ON (t1.id_t1 = t1.id)If I delete these 3 joins than the planning time goes down from 5.482 ms to 754.708 ms but I'm not sure why this context is so demanding on the planner.I'm tryng now to make a materialized view that will allow me to stop using the syntax above.This query is little bit crazy - it has more than 40 joins - but 700ms for planning is looks too much. Maybe your comp has slow CPU.Postgres has two planners - deterministic and geneticProbably slow plan is related to deterministic planner.I reattached the same files, they should be fine like this.------ Original Message ------From: "Fırat Güleç" <firat.gulec@hepsijet.com>To: "Sterpu Victor" <victor@caido.ro>Sent: 2019-11-22 1:35:15 PMSubject: RE: Postgresql planning time too highHello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
The CPU is at about 7% when I run the query and 5% are occupied by postgresql.CPU is Xeon E3 1240 v6 3.7Gh - not very good, but postgres is not overloading it.Tests are done on windows 2016 server so the next step was to try and change the priority of all the postgresql procesess to realtime.This setting had some effect as the planning time went down from 5114.959 ms to 2999.542 msAnd then I changed a single line and the planning time went from 2999.542 ms to 175.509 ms: I deleted the line "LIMIT 20 OFFSET 0"Changing this line in the final query is not an option, can I do something else to fix this?
Thank you.------ Original Message ------From: "Pavel Stehule" <pavel.stehule@gmail.com>To: "Sterpu Victor" <victor@caido.ro>Cc: "Fırat Güleç" <firat.gulec@hepsijet.com>; "Pgsql Performance" <pgsql-performance@lists.postgresql.org>Sent: 2019-11-22 2:59:11 PMSubject: Re: Re[2]: Postgresql planning time too highpá 22. 11. 2019 v 12:46 odesílatel Sterpu Victor <victor@caido.ro> napsal:No rows should be returned, DB is empty.I'm testing now on a empty DB trying to find out how to improve this.In this query I have 3 joins like this:SELECT t1.id, t2.valid_fromFROM t1JOIN t2 ON (t1.id_t1 = t1.id)If I delete these 3 joins than the planning time goes down from 5.482 ms to 754.708 ms but I'm not sure why this context is so demanding on the planner.I'm tryng now to make a materialized view that will allow me to stop using the syntax above.This query is little bit crazy - it has more than 40 joins - but 700ms for planning is looks too much. Maybe your comp has slow CPU.Postgres has two planners - deterministic and geneticProbably slow plan is related to deterministic planner.I reattached the same files, they should be fine like this.------ Original Message ------From: "Fırat Güleç" <firat.gulec@hepsijet.com>To: "Sterpu Victor" <victor@caido.ro>Sent: 2019-11-22 1:35:15 PMSubject: RE: Postgresql planning time too highHello Sterpu,
First, please run vaccum for your Postgresql DB.
No rows returned from your query. Could you double check your query criteria.
After that could you send explain analyze again .
Regards,
FIRAT GÜLEÇ
Infrastructure & Database Operations Manager
firat.gulec@hepsijet.com
M: 0 532 210 57 18
İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
From: Sterpu Victor <victor@caido.ro>
Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgresql.org
Subject: Postgresql planning time too high
Hello
I'm on a PostgreSQL 12.1 and I just restored a database from a backup.
When I run a query I get a big execution time: 5.482 ms
After running EXPLAIN ANALYZE I can see that the "Planning Time: 5165.742 ms" and the "Execution Time: 6.244 ms".
The database is new(no need to vacuum) and i'm the only one connected to it. I use a single partition on the harddrive.
I also tried this on a postgresql 9.5 and the result was the same.
I'm not sure what to do to improve this situation.
The query and the explain is attached.
Thank you
Attachment
Attachment
On Fri, Nov 22, 2019 at 11:44:51AM +0000, Sterpu Victor wrote: >No rows should be returned, DB is empty. >I'm testing now on a empty DB trying to find out how to improve this. > I'm a bit puzzled why you're doinf tests on an empty database, when in production it'll certainly contain data. I guess you're assuming that this way you isolate planning time, which should remain about the same even with data loaded, but I'm not entirely sure that's true - all this planning is done with no statistics (histograms, MCV lists, ...) and maybe it's forcing the planner to do more work? I wouldn't be surprised if having those stats would allow the planner to take some shortcuts, cutting the plannnig time down. Not to mention that we don't know if the plan is actually any good, for all what we know it might take 10 years on real data, making the planning duration irrelevant. Let's put that aside, though. Let's assume it's because of expensive join order planning. I don't think you have a lot of options, here, unfortunately. One option is to try reducing the planner options that determine how much effort should be spent on join planning, e.g. join_collapse_limit and geqo_threshold. If this is the root cause, you might even rewrite the query to use optimal join order and set join_collapse_limit=1. You'll have to play with it. The other option is using CTEs with materialization, with the same effect, i.e. prevention of optimization across CTEs, reducing the total effort. >In this query I have 3 joins like this: > >SELECT t1.id, t2.valid_from >FROM t1 >JOIN t2 ON (t1.id_t1 = t1.id) >LEFT JOIN t3 ON (t3.id_t1 = t1.id AND t3.valid_from<t2.valid_from) >WHERE t3.id IS NULL > >If I delete these 3 joins than the planning time goes down from 5.482 >ms to 754.708 ms but I'm not sure why this context is so demanding on >the planner. >I'm tryng now to make a materialized view that will allow me to stop >using the syntax above. > >I reattached the same files, they should be fine like this. > It'd be useful to have something others can use to reproduce the issue, and investigate locally. SQL script that creates the whole schema and runs the query, for example. What I'd like to see is a perf profile from the planning, so that we can see where exactly is the bottleneck. Maybe there actually is a bug that makes it muych more expensive than it should be, in some corner case? regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services