Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1YKwE5-0006b0-3V for pgsql-performance@arkaria.postgresql.org; Mon, 09 Feb 2015 21:50:41 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1YKwE3-0005fO-TZ for pgsql-performance@arkaria.postgresql.org; Mon, 09 Feb 2015 21:50:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1YKwE2-0005fH-Fr for pgsql-performance@postgresql.org; Mon, 09 Feb 2015 21:50:38 +0000 Received: from post.visena.com ([46.226.10.50]) by magus.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1YKwDy-0004pl-Ls for pgsql-performance@postgresql.org; Mon, 09 Feb 2015 21:50:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=visena.com; s=20141101.wh; h=Content-Type:MIME-Version:Subject:In-Reply-To:Message-ID:To:From:Date; bh=XILwOs2aYwgXS7Amoh4X7kC2i0TUccLuovOsh55eiwc=; b=RDXEn7WICOlyRfsgNJWdjxaXuiY3/GPK+ddX82zzdTqkt6ki/DJD2xpgZm9F4GOWM5Ufqodm1rfStSqCky1HCOyYoGdCTxVR0N5FoXXqKyWEGav5AiA3sAZWchjUUyFBU3NX+KDGpUhqErCRVz4qiJIJN/iG21ToTFOAAy1QPpQ=; Received: from [10.0.1.10] (helo=tc7-visena.wh.internal.visena.com) by post.visena.com with esmtp (Exim 4.82) (envelope-from ) id 1YKwDu-0005OZ-Tw for pgsql-performance@postgresql.org; Mon, 09 Feb 2015 22:50:33 +0100 Received: from localhost ([127.0.0.1] helo=tc7-visena.wh.internal.visena.com) by tc7-visena.wh.internal.visena.com with esmtp (Exim 4.82) (envelope-from ) id 1YKwDv-0007v5-7z for pgsql-performance@postgresql.org; Mon, 09 Feb 2015 22:50:31 +0100 Date: Mon, 9 Feb 2015 22:50:31 +0100 (CET) From: Andreas Joseph Krogh To: pgsql-performance@postgresql.org Message-ID: In-Reply-To: Subject: Re: Poor performance when deleting from entity-attribute-value type master-table MIME-Version: 1.0 X-Mailer: Visena Mail 1.9.0-SNAPSHOT X-Spam-Score: -1.0 X-Spam-Report: SpamAssasin (score=-1.0, required 5.0 ALL_TRUSTED=-1, HTML_MESSAGE=0.001) X-Pg-Spam-Score: -2.0 (--) Content-Type: multipart/related; boundary="----=_Part_296_1372310279.1423518631141" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org ------=_Part_295_625692677.1423518631141 Content-Type: multipart/related; boundary="----=_Part_296_1372310279.1423518631141" ------=_Part_296_1372310279.1423518631141 Content-Type: multipart/alternative; boundary="----=_Part_297_892647656.1423518631155" ------=_Part_297_892647656.1423518631155 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable P=C3=A5 mandag 09. februar 2015 kl. 22:36:55, skrev Igor Neyman < ineyman@perceptron.com >: =C2=A0 =C2=A0 From: pgsql-performance-owner@postgresql.org=20 [mailto:pgsql-performance-owner@postgresql.org]On Behalf Of Andreas Joseph = Krogh Sent: Monday, February 09, 2015 4:13 PM To: pgsql-performance@postgresql.org Subject: [PERFORM] Poor performance when deleting from entity-attribute-val= ue=20 type master-table =C2=A0 Hi all. =C2=A0 Using PG-9.4.0 I'm seeing this trying to delete from an "entity"-master tab= le: =C2=A0 *# explain analyze=C2=A0=C2=A0=C2=A0=C2=A0 delete from onp_crm_entity where= entity_id IN (select=20 tmp.delivery_id from temp_delete_delivery_id tmp); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 QUERY=20 PLAN=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0 =20 ---------------------------------------------------------------------------= ------------------------------------------------------------------------ =C2=A0Delete on onp_crm_entity=C2=A0 (cost=3D0.43..5673.40 rows=3D1770 wid= th=3D12) (actual=20 time=3D7.370..7.370 rows=3D0 loops=3D1) =C2=A0=C2=A0 ->=C2=A0 Nested Loop=C2=A0 (cost=3D0.43..5673.40 rows=3D1770 = width=3D12) (actual=20 time=3D0.050..1.374 rows=3D108 loops=3D1) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 Seq Scan on temp= _delete_delivery_id tmp=C2=A0 (cost=3D0.00..27.70=20 rows=3D1770 width=3D14) (actual time=3D0.014..0.080 rows=3D108 loops=3D1) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 Index Scan using= onp_crm_entity_pkey on onp_crm_entity=C2=A0=20 (cost=3D0.43..3.18 rows=3D1 width=3D14) (actual time=3D0.010..0.011 rows=3D= 1 loops=3D108) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 Index Cond: (entity_id =3D tmp.delivery_id) =C2=A0Planning time: 0.314 ms =C2=A0Trigger for constraint onp_crm_activity_entity_id_fkey: time=3D4.141= calls=3D108 =C2=A0Trigger for constraint ... =C2=A0Trigger for constraint ... =C2=A0Trigger for constraint ... =C2=A0 =C2=A0 I have lots of tables referencing onp_crm_entity(entity_id) so I expect the= =20 poor performance of deleting from it is caused by all the triggers firing t= o=20 check FKI-constraints. =C2=A0 =C2=A0 Andreas, do you have indexes on FK columns in child tables? If not =E2=80=93 there is your problem. =C2=A0 Yes, they have indexes, but deleting 1M rows still results in callin= g the=20 triggers 1M times * number of FKs... =C2=A0 -- Andreas Joseph Krogh CTO / P= artner -=20 Visena AS Mobile: +47 909 56 963 andreas@visena.com =20 www.visena.com =C2=A0 ------=_Part_297_892647656.1423518631155 Content-Type: text/html;charset=UTF-8 Content-Transfer-Encoding: quoted-printable
P=C3=A5 mandag 09. februar 2015 kl. 22:36:55, skrev Igor Neyman <ineyman@perceptron.com>:

=C2=A0

=C2=A0

From: pgsql-performance-owner@postgr= esql.org [mailto:pgsql-performance-owner@postgresql.org] On Behalf Of Andreas Joseph Krogh
Sent: Monday, February 09, 2015 4:13 PM
To: pgsql-performance@postgresql.org
Subject: [PERFORM] Poor performance when deleting from entity-attrib= ute-value type master-table

=C2=A0

Hi all.

=C2=A0

Using PG-9.4.0 I'm seeing this trying to delete from= an "entity"-master table:

=C2=A0

*# explain analyze=C2=A0=C2=A0=C2=A0=C2=A0 delete fr= om onp_crm_entity where entity_id IN (select tmp.delivery_id from temp_dele= te_delivery_id tmp);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 QUERY PLAN=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0 ---------------------------------------------------------------------------= ------------------------------------------------------------------------ =C2=A0Delete on onp_crm_entity=C2=A0 (cost=3D0.43..5673.40 rows=3D1770 widt= h=3D12) (actual time=3D7.370..7.370 rows=3D0 loops=3D1)
=C2=A0=C2=A0 ->=C2=A0 Nested Loop=C2=A0 (cost=3D0.43..5673.40 rows=3D177= 0 width=3D12) (actual time=3D0.050..1.374 rows=3D108 loops=3D1)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 Seq Scan on te= mp_delete_delivery_id tmp=C2=A0 (cost=3D0.00..27.70 rows=3D1770 width=3D14)= (actual time=3D0.014..0.080 rows=3D108 loops=3D1)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->=C2=A0 Index Scan usi= ng onp_crm_entity_pkey on onp_crm_entity=C2=A0 (cost=3D0.43..3.18 rows=3D1 = width=3D14) (actual time=3D0.010..0.011 rows=3D1 loops=3D108)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 Index Cond: (entity_id =3D tmp.delivery_id)
=C2=A0Planning time: 0.314 ms
=C2=A0Trigger for constraint onp_crm_activity_entity_id_fkey: time=3D4.141 = calls=3D108

=C2=A0Trigger for constraint ...

=C2=A0Trigger for constraint ...

=C2=A0Trigger for constraint ...

=C2=A0

=C2=A0

I have lots of tables referencing onp_crm_entity(ent= ity_id) so I expect the poor performance of deleting from it is caused by a= ll the triggers firing to check FKI-constraints.

=C2=A0

=C2=A0

Andreas, do you have indexes on FK co= lumns in child tables?

If not =E2=80=93 there is your proble= m.

=C2=A0
Yes, they have indexes, but deleting 1M rows still results in calling = the triggers 1M times * number of FKs...
=C2=A0
--
Andrea= s Joseph Krogh
CTO / Partner<= /span> - Visena AS
Mobile: +47 90= 9 56 963
=3D""
=C2=A0
------=_Part_297_892647656.1423518631155-- ------=_Part_296_1372310279.1423518631141 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-ID: 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 ------=_Part_296_1372310279.1423518631141-- ------=_Part_295_625692677.1423518631141--