Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sobYh-00CSyi-Cs for pgsql-general@arkaria.postgresql.org; Thu, 12 Sep 2024 04:35:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sobYh-00Ey6T-2C for pgsql-general@arkaria.postgresql.org; Thu, 12 Sep 2024 04:35:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sobYg-00Ey63-LJ for pgsql-general@lists.postgresql.org; Thu, 12 Sep 2024 04:35:54 +0000 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sobYc-000kwq-Fg for pgsql-general@lists.postgresql.org; Thu, 12 Sep 2024 04:35:53 +0000 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2da55ea8163so369914a91.1 for ; Wed, 11 Sep 2024 21:35:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bitnine-net.20230601.gappssmtp.com; s=20230601; t=1726115750; x=1726720550; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+iVWdBvRRQjVsge9YAg7fnXS3n0hNvTsXj3f4u5FzFI=; b=iGPuMbIIi+sn6K5RzZRzzWYMS0MVVVrcOmHI57XrMY2EoAlZadZED3KY23/Ak25wCf 9OPQdqo/wECN5v77CUHy4o6UOQYOlepz85cEFFw3fEPOs0R34O1/YchLaIp4ZOfD80fZ jJKNfLPoUxORlK1vPCongCzu5pyVCU6srZWwffmRarQxiguDRpil5iwZjZzyS8pDOQFd xmb8bKoPplWV8nECEGZxXgcY0594RBV9Z5OA5DRT4Ejj5IUW3nl3lYpuGzGNCY6zGGHW ZoqEhJS2unQ9AQSy43ZdA1/+Nx42QonqnjNYtxoyVbqjjbGr/lqlzOExQAve+APgotbr zmOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726115750; x=1726720550; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+iVWdBvRRQjVsge9YAg7fnXS3n0hNvTsXj3f4u5FzFI=; b=lHByJ5pmvJBIN0+BzgW/Q1TvscsJmpEg9UZDnM21lxQCDTPgSunJOylRuSiyTL7e8u ygbGYfhhV9UN/P+KLa0Q5GsvpkFvev49d2rylKna8dns3B7JygzEHip7Zs55LlRWID7h 99fk+OSFRiufM1/QxQRdG1YVwvf5s/gghTrSV070C4oJT3HK+SnXLUxkViVwLfkUe5DE i6hsuwCrnPmhB7Fhytk5ArSgwunrS2m3gE92bI20Gu2JVtnhrGMsg4yDddCOrPd8Jh/1 j4UJWYNnahAsQXsW7X2bavnym2jBrEPDa65+5HoUQv4PS9xAM3vPIpRxn7lSlXKckAZ8 GUxw== X-Gm-Message-State: AOJu0YxY/xYW36Qu4vwA/CmAbMp9cL7ac9SQ67cVUgL9o87WrS5yughd NYtCgRGLXJdbzklWt7s5JHatakWT+KxI6oCP7L0X98oJOhQv2UKQ8WhO5DF4cfI4tWifT+SxR1W gY0l6aCifsb2gLCE1l6cxdfG7B7SKZb+zLFWXqw== X-Google-Smtp-Source: AGHT+IEvEAia0Bd58ZrRyncHAD1hVtS4ceAir6YQOnm5B2ygQIWETlpLjBPenPQrvdxSQijnmYZe/+tdIn/yIFpNKhg= X-Received: by 2002:a17:90b:180e:b0:2d3:b643:8386 with SMTP id 98e67ed59e1d1-2db9ffc1aeemr1671481a91.9.1726115749754; Wed, 11 Sep 2024 21:35:49 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Muhammad Usman Khan Date: Thu, 12 Sep 2024 09:35:38 +0500 Message-ID: Subject: Re: Recommendations on improving the insert on conflict do nothing performance To: Durgamahesh Manne Cc: pgsql-general@lists.postgresql.org, pgsql-in-general@postgresql.org Content-Type: multipart/alternative; boundary="0000000000001b1cd40621e4a461" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001b1cd40621e4a461 Content-Type: text/plain; charset="UTF-8" Hi, You can use the following approaches for optimization: - Instead of inserting one row at a time, perform bulk inserts, which will reduce the overhead of each individual transaction - Partitioning can improve write performance by splitting the data into smaller, more manageable chunks - Tune postgres configuration like work_mem = '16MB' shared_buffers = '8GB' effective_cache_size = '24GB' On Wed, 11 Sept 2024 at 13:50, Durgamahesh Manne wrote: > Hi > insert into > dictionary(lang,tid,sportid,brandid,translatedtext,objecttype,basetid) > values ($1,$2,$3,$4,$5,$6,$7) on conflict do nothing > *8vcpus and 32gb ram > Number of calls per sec 1600 at this time 42% of cpu utilized > Max in ms 33.62 per call > Avg in ms 0.17 per call > Table > "dictionary.dictionary" > Column | Type | Collation | Nullable | > Default | Storage | Compression | Stats target | Description > > ----------------+--------------------------+-----------+----------+----------+----------+-------------+--------------+------------- > lang | text | | not null | > | extended | | | > tid | text | | not null | > | extended | | | > basetid | text | | not null | > | extended | | | > sportid | text | | | > | extended | | | > brandid | text | | not null | > | extended | | | > translatedtext | text | | | > | extended | | | > objecttype | text | | | > | extended | | | > createdat | timestamp with time zone | | not null | now() > | plain | | | > modified | timestamp with time zone | | not null | now() > | plain | | | > modifiedby | text | | not null | > ''::text | extended | | | > version | integer | | not null | 0 > | plain | | | > Indexes: > "pk_dictionary" PRIMARY KEY, btree (lang, tid) > "idx_dictionary_basetid" btree (basetid) > "idx_dictionary_brandid" btree (brandid) > "idx_dictionary_objecttype" btree (objecttype) > "idx_dictionary_sportid" btree (sportid) > Triggers: > i_dictionary_createdat BEFORE INSERT ON dictionary FOR EACH ROW > EXECUTE FUNCTION update_createdat_col() > i_dictionary_modified BEFORE INSERT OR UPDATE ON dictionary FOR EACH > ROW EXECUTE FUNCTION update_modified_col() > Access method: heap > How do we improve this query performance without taking more cpu? > > Regards, > Durga Mahesh > --0000000000001b1cd40621e4a461 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+SGksPGJyPllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgYXBwcm9hY2hl cyBmb3Igb3B0aW1pemF0aW9uOjxkaXY+PHVsPjxsaT5JbnN0ZWFkIG9mIGluc2VydGluZyBvbmUg cm93IGF0IGEgdGltZSwgcGVyZm9ybSBidWxrIGluc2VydHMsIHdoaWNoIHdpbGwgcmVkdWNlIHRo ZSBvdmVyaGVhZCBvZiBlYWNoIGluZGl2aWR1YWwgdHJhbnNhY3Rpb248L2xpPjxsaT4NCg0KUGFy dGl0aW9uaW5nIGNhbiBpbXByb3ZlIHdyaXRlIHBlcmZvcm1hbmNlIGJ5IHNwbGl0dGluZyB0aGUg ZGF0YSBpbnRvIHNtYWxsZXIsIG1vcmUgbWFuYWdlYWJsZSBjaHVua3MNCg0KwqDCoDxicj48L2xp PjxsaT5UdW5lIHBvc3RncmVzIGNvbmZpZ3VyYXRpb27CoGxpa2U8YnI+d29ya19tZW0gPSA8c3Bh biBjbGFzcz0iZ21haWwtaGxqcy1zdHJpbmciPiYjMzk7MTZNQiYjMzk7PC9zcGFuPsKgPGJyPnNo YXJlZF9idWZmZXJzID0gPHNwYW4gY2xhc3M9ImdtYWlsLWhsanMtc3RyaW5nIj4mIzM5OzhHQiYj Mzk7PC9zcGFuPg0KPGJyPmVmZmVjdGl2ZV9jYWNoZV9zaXplID0gPHNwYW4gY2xhc3M9ImdtYWls LWhsanMtc3RyaW5nIj4mIzM5OzI0R0ImIzM5Ozwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+PC9kaXY+ PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxf YXR0ciI+T24gV2VkLCAxMSBTZXB0IDIwMjQgYXQgMTM6NTAsIER1cmdhbWFoZXNoIE1hbm5lICZs dDs8YSBocmVmPSJtYWlsdG86bWFoZXNocG9zdGdyZXM5QGdtYWlsLmNvbSI+bWFoZXNocG9zdGdy ZXM5QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0i Z21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6 MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0 ciI+SGnCoDxkaXY+wqAgwqAgaW5zZXJ0IGludG8gZGljdGlvbmFyeShsYW5nLHRpZCxzcG9ydGlk LGJyYW5kaWQsdHJhbnNsYXRlZHRleHQsb2JqZWN0dHlwZSxiYXNldGlkKSB2YWx1ZXMgKCQxLCQy LCQzLCQ0LCQ1LCQ2LCQ3KSBvbiBjb25mbGljdCBkbyBub3RoaW5nwqDCoDwvZGl2PjxkaXY+wqAq OHZjcHVzIGFuZCAzMmdiIHJhbcKgPC9kaXY+PGRpdj7CoCDCoE51bWJlciBvZiBjYWxscyBwZXIg c2VjIDE2MDAgYXQgdGhpcyB0aW1lIDQyJSBvZiBjcHUgdXRpbGl6ZWTCoDxicj48L2Rpdj48ZGl2 PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgTWF4IGluIG1zIDMzLjYyIHBlciBjYWxswqA8L2Rp dj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQXZnIGluIG1zwqAgMC4xNyBwZXIgY2Fs bMKgPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRhYmxlICZxdW90O2RpY3Rpb25hcnku ZGljdGlvbmFyeSZxdW90Ozxicj7CoCDCoCDCoENvbHVtbiDCoCDCoCB8IMKgIMKgIMKgIMKgIMKg IFR5cGUgwqAgwqAgwqAgwqAgwqAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgwqB8 IFN0b3JhZ2UgwqB8IENvbXByZXNzaW9uIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb248YnI+ LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS08YnI+wqBsYW5nIMKgIMKgIMKgIMKgIMKgIHwgdGV4dCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIHwgbm90IG51bGwgfCDCoCDC oCDCoCDCoCDCoHwgZXh0ZW5kZWQgfCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKg IMKgIMKgfDxicj7CoHRpZCDCoCDCoCDCoCDCoCDCoCDCoHwgdGV4dCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIHwgbm90IG51bGwgfCDCoCDCoCDCoCDCoCDC oHwgZXh0ZW5kZWQgfCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgfDxi cj7CoGJhc2V0aWQgwqAgwqAgwqAgwqB8IHRleHQgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgfCDCoCDCoCDCoCDCoCDCoCB8IG5vdCBudWxsIHwgwqAgwqAgwqAgwqAgwqB8IGV4dGVuZGVk IHwgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoHw8YnI+wqBzcG9ydGlk IMKgIMKgIMKgIMKgfCB0ZXh0IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAg wqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgwqAgwqB8IGV4dGVuZGVkIHwgwqAg wqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoHw8YnI+wqBicmFuZGlkIMKgIMKg IMKgIMKgfCB0ZXh0IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAg wqAgfCBub3QgbnVsbCB8IMKgIMKgIMKgIMKgIMKgfCBleHRlbmRlZCB8IMKgIMKgIMKgIMKgIMKg IMKgIHwgwqAgwqAgwqAgwqAgwqAgwqAgwqB8PGJyPsKgdHJhbnNsYXRlZHRleHQgfCB0ZXh0IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDC oCDCoHwgwqAgwqAgwqAgwqAgwqB8IGV4dGVuZGVkIHwgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDC oCDCoCDCoCDCoCDCoCDCoHw8YnI+wqBvYmplY3R0eXBlIMKgIMKgIHwgdGV4dCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqB8IMKg IMKgIMKgIMKgIMKgfCBleHRlbmRlZCB8IMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAg wqAgwqAgwqB8PGJyPsKgY3JlYXRlZGF0IMKgIMKgIMKgfCB0aW1lc3RhbXAgd2l0aCB0aW1lIHpv bmUgfCDCoCDCoCDCoCDCoCDCoCB8IG5vdCBudWxsIHwgbm93KCkgwqAgwqB8IHBsYWluIMKgIMKg fCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgfDxicj7CoG1vZGlmaWVk IMKgIMKgIMKgIHwgdGltZXN0YW1wIHdpdGggdGltZSB6b25lIHwgwqAgwqAgwqAgwqAgwqAgfCBu b3QgbnVsbCB8IG5vdygpIMKgIMKgfCBwbGFpbiDCoCDCoHwgwqAgwqAgwqAgwqAgwqAgwqAgfCDC oCDCoCDCoCDCoCDCoCDCoCDCoHw8YnI+wqBtb2RpZmllZGJ5IMKgIMKgIHwgdGV4dCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIHwgbm90IG51bGwgfCAmIzM5 OyYjMzk7Ojp0ZXh0IHwgZXh0ZW5kZWQgfCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKg IMKgIMKgIMKgfDxicj7CoHZlcnNpb24gwqAgwqAgwqAgwqB8IGludGVnZXIgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIMKgIMKgIHwgbm90IG51bGwgfCAwIMKgIMKgIMKgIMKg fCBwbGFpbiDCoCDCoHwgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoHw8 YnI+SW5kZXhlczo8YnI+wqAgwqAgJnF1b3Q7cGtfZGljdGlvbmFyeSZxdW90OyBQUklNQVJZIEtF WSwgYnRyZWUgKGxhbmcsIHRpZCk8YnI+wqAgwqAgJnF1b3Q7aWR4X2RpY3Rpb25hcnlfYmFzZXRp ZCZxdW90OyBidHJlZSAoYmFzZXRpZCk8YnI+wqAgwqAgJnF1b3Q7aWR4X2RpY3Rpb25hcnlfYnJh bmRpZCZxdW90OyBidHJlZSAoYnJhbmRpZCk8YnI+wqAgwqAgJnF1b3Q7aWR4X2RpY3Rpb25hcnlf b2JqZWN0dHlwZSZxdW90OyBidHJlZSAob2JqZWN0dHlwZSk8YnI+wqAgwqAgJnF1b3Q7aWR4X2Rp Y3Rpb25hcnlfc3BvcnRpZCZxdW90OyBidHJlZSAoc3BvcnRpZCk8YnI+VHJpZ2dlcnM6PGJyPsKg IMKgIGlfZGljdGlvbmFyeV9jcmVhdGVkYXQgQkVGT1JFIElOU0VSVCBPTiBkaWN0aW9uYXJ5IEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHVwZGF0ZV9jcmVhdGVkYXRfY29sKCk8YnI+wqAg wqAgaV9kaWN0aW9uYXJ5X21vZGlmaWVkIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9OIGRpY3Rp b25hcnkgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdXBkYXRlX21vZGlmaWVkX2NvbCgp PGJyPkFjY2VzcyBtZXRob2Q6IGhlYXA8YnI+PC9kaXY+PGRpdj5Ib3cgZG8gd2UgaW1wcm92ZSB0 aGlzIHF1ZXJ5IHBlcmZvcm1hbmNlIHdpdGhvdXQgdGFraW5nIG1vcmUgY3B1PzwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+UmVnYXJkcyw8L2Rpdj48ZGl2PkR1cmdhIE1haGVzaDwvZGl2PjwvZGl2 Pg0KPC9ibG9ja3F1b3RlPjwvZGl2Pg0K --0000000000001b1cd40621e4a461--