Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iY9Zz-0006u7-9e for pgsql-performance@arkaria.postgresql.org; Fri, 22 Nov 2019 14:06:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iY9Zx-0007XQ-3O for pgsql-performance@arkaria.postgresql.org; Fri, 22 Nov 2019 14:06:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iY9Zw-0007XJ-DT for pgsql-performance@lists.postgresql.org; Fri, 22 Nov 2019 14:06:32 +0000 Received: from mail.caido.ro ([86.107.248.7]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1iY9Zr-0006su-O6 for pgsql-performance@lists.postgresql.org; Fri, 22 Nov 2019 14:06:31 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.caido.ro (Postfix) with ESMTP id 5E4011E9A7C; Fri, 22 Nov 2019 16:20:28 +0200 (EET) Received: from mail.caido.ro ([127.0.0.1]) by localhost (caido.ro [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id zE3Q6tNuUGbz; Fri, 22 Nov 2019 16:20:26 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by mail.caido.ro (Postfix) with ESMTP id 4EE521E9AB2; Fri, 22 Nov 2019 16:20:26 +0200 (EET) DKIM-Filter: OpenDKIM Filter v2.9.2 mail.caido.ro 4EE521E9AB2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=caido.ro; s=2B8A3026-9717-11E9-9D82-7DF1CDD8AB23; t=1574432426; bh=VUsmJ9qtSa5UrbO2Qr+urguZ4h48AUcl6DSEKgqGDk8=; h=From:To:Subject:Date:Message-Id:Reply-To:Mime-Version: Content-Type; b=WKUkU5+6fhuEY0BfqT3GLJD1QZ3w8qKA/troURLA/NDF/ln312djPluosjDR8EAIw 9UcIrt1XZApkAoAkM7qju7+jDGzSAnIeKOdNY6q6/E+MXTb4Hf1BoJLDFjgqTcu1AB gVhnBRIQvXdlzjkSW9orAWGCtqBQVcMl8wJ942vE= X-Virus-Scanned: amavisd-new at caido.ro Received: from mail.caido.ro ([127.0.0.1]) by localhost (caido.ro [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 0tpVei3HGMQG; Fri, 22 Nov 2019 16:20:25 +0200 (EET) Received: from [192.168.88.2] (unknown [89.43.152.14]) by mail.caido.ro (Postfix) with ESMTPSA id A542C1E9A7C; Fri, 22 Nov 2019 16:20:25 +0200 (EET) From: "Sterpu Victor" To: "Pavel Stehule" Subject: Re[4]: Postgresql planning time too high Cc: =?utf-8?q?F=c4=b1rat=20G=c3=bcle=c3=a7?= , "Pgsql Performance" Date: Fri, 22 Nov 2019 14:06:13 +0000 Message-Id: In-Reply-To: References: <7ca4228bd9ea8ee1b119123679f340ff@mail.gmail.com> Reply-To: "Sterpu Victor" User-Agent: eM_Client/7.0.27943.0 Mime-Version: 1.0 Content-Type: multipart/related; boundary="------=_MB72E87454-57D4-4BD4-ADD1-C2CE771061BA" X-Antivirus: Avast (VPS 191120-0, 11/20/2019), Outbound message X-Antivirus-Status: Clean List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --------=_MB72E87454-57D4-4BD4-ADD1-C2CE771061BA Content-Type: multipart/alternative; boundary="------=_MBDF612C32-25A8-40D3-8FB1-8958A1923E81" --------=_MBDF612C32-25A8-40D3-8FB1-8958A1923E81 Content-Type: text/plain; format=flowed; charset=utf-8 Content-Transfer-Encoding: quoted-printable The CPU is at about 7% when I run the query and 5% are occupied by=20 postgresql. CPU is Xeon E3 1240 v6 3.7Gh - not very good, but postgres is not=20 overloading it. Tests are done on windows 2016 server so the next step was to try and=20 change the priority of all the postgresql procesess to realtime. This setting had some effect as the planning time went down from=20 5114.959 ms to 2999.542 ms And then I changed a single line and the planning time went from=20 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=20 something else to fix this? Thank you. ------ Original Message ------ From: "Pavel Stehule" To: "Sterpu Victor" Cc: "F=C4=B1rat G=C3=BCle=C3=A7" ; "Pgsql Perform= ance"=20 Sent: 2019-11-22 2:59:11 PM Subject: Re: Re[2]: Postgresql planning time too high > > >p=C3=A1 22. 11. 2019 v 12:46 odes=C3=ADlatel Sterpu Victor =20 >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_from >>FROM t1 >>JOIN t2 ON (t1.id_t1 =3D t1.id) >>LEFT JOIN t3 ON (t3.id_t1 =3D t1.id AND t3.valid_from>WHERE t3.id IS NULL >> >>If I delete these 3 joins than the planning time goes down from 5.482=20 >>ms to 754.708 ms but I'm not sure why this context is so demanding on=20 >>the planner. >>I'm tryng now to make a materialized view that will allow me to stop=20 >>using the syntax above. > >This query is little bit crazy - it has more than 40 joins - but 700ms=20 >for planning is looks too much. Maybe your comp has slow CPU. > >Postgres has two planners - deterministic and genetic > > https://www.postgresql.org/docs/9.1/geqo-pg-intro.html > >Probably slow plan is related to deterministic planner. > > >> >>I reattached the same files, they should be fine like this. >> >> >> >> >>------ Original Message ------ >>From: "F=C4=B1rat G=C3=BCle=C3=A7" >>To: "Sterpu Victor" >>Cc: pgsql-performance@lists.postgresql.org >>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=20 >>>criteria. >>> >>> >>> >>>After that could you send explain analyze again . >>> >>> >>> >>>Regards, >>> >>> >>> >>>FIRAT G=C3=9CLE=C3=87 >>>Infrastructure & Database Operations Manager >>>firat.gulec@hepsijet.com >>> >>> >>> >>>M: 0 532 210 57 18 >>>=C4=B0n=C3=B6n=C3=BC Mh. Mimar Sinan Cd. No:3 G=C3=BCzeller Org.San.B= =C3=B6lg. GEBZE / KOCAEL=C4=B0 >>> >>> >>> >>> >>> >>> >>> >>> >>>From: Sterpu Victor >>>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=20 >>>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:=20 >>>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= =20 >>>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 >>> >>> >>> >>> --------=_MBDF612C32-25A8-40D3-8FB1-8958A1923E81 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
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 =C2=A0so the next step= was to try and change the priority of all the postgresql procesess to real= time.
This setting had some effect as the planning time went down= from=C2=A05114.959 ms to=C2=A02999.542 ms

And then I changed= a single line and the planning time went from=C2=A02999.542 ms to=C2=A0175.5= 09 ms: I deleted the line "LIMIT= =C2=A020 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" <p= avel.stehule@gmail.com>
To: "Sterpu Victor" <victor@caid= o.ro>
Cc: "F=C4=B1rat G=C3=BCle=C3=A7" <firat.gulec@hepsijet.com>; "Pgsql Performance" <pgsql-performance@li= sts.postgresql.org>
Sent: 2019-11-22 2:59:11 PM
Subject: Re: Re[2]: Postgresql planning time too high


p=C3=A1 22. 11. 2019 v=C2=A012:46= odes=C3=ADlatel Sterpu Victor <victo= r@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:=C2=A0

SELECT t1.id, t2.valid_from
FROM t1
JOIN t2 ON (t1.id_t1= =3D t1.id)
LEFT JOIN t3 = ON (t3.id_t1 =3D 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=C2=A05.482 ms=C2=A0to 754.708 ms but I'm not sure why this context is so deman= ding on the planner.
I'm tryng now to make a materialized= view that will allow me to stop using the syntax above.
<= /div>

This query is little bit craz= y - 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 genetic


Probably slow plan is related to deterministic planner.


I reattached the same files, they shoul= d be fine like this.



------ Original Message ------
From: "F=C4=B1rat G=C3=BCle=C3=A7" <firat.gulec@hepsijet.com>
To: "Sterpu Victor" <victor@caid= o.ro>
Sent: 2019-11-22 1:35:15 PM
Subject: RE: Postgresql planning time too high

Hello Sterpu,

=C2=A0

First, please run vaccum for your Postgresql DB.<= /span>

=C2=A0

No rows returned from your query.= Could you double check your query criteria.

=C2=A0

After that could you send explain analyze again .

=C2=A0

Regards,

=C2=A0

FIRAT G=C3=9CLE=C3=87=C2=A0
Infrastructure & Database Operations = Manager
firat.gulec@hepsijet.com

=C2=A0

M:=C2=A00 = 532 210 57 18=C2=A0
=C4=B0n=C3=B6= n=C3=BC Mh. Mimar Sinan Cd. No:3 G=C3=BCzeller Org.San.B=C3=B6lg. GEBZE = / KOCAEL=C4=B0

3D"image.png"

=C2=A0

=C2=A0

=C2= =A0

From: Sterpu Vict= or <victor@caido.ro>
= Sent: Friday, November 22, 2019 2:21 PM
To: pgsql-performance@lists.postgres= ql.org
Subject: Postgresql planning time too high

=C2=A0

Hello

=C2=A0

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=C2=A0"Execution Time: 6.244 ms".

The database is new(no need to vacuum) and i'm the only one connec= ted 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.<= /span>

I'm not sure what to do to improve this situat= ion.

The query and the explain is attached.

=C2=A0

Thank you

=C2=A0

--------=_MBDF612C32-25A8-40D3-8FB1-8958A1923E81-- --------=_MB72E87454-57D4-4BD4-ADD1-C2CE771061BA Content-Type: image/png; name=image002.png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-Id: <16e932f6df85b16b21> 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 QUFBwduOiP8PJGpr4D7JtVYAAAAASUVORK5CYII= --------=_MB72E87454-57D4-4BD4-ADD1-C2CE771061BA--