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 1r9DbA-00FHcS-B8 for pgsql-hackers@arkaria.postgresql.org; Sat, 02 Dec 2023 00:11:08 +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 1r9Db7-009vg8-04 for pgsql-hackers@arkaria.postgresql.org; Sat, 02 Dec 2023 00:11:05 +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 1r9Db6-009vfz-Kz for pgsql-hackers@lists.postgresql.org; Sat, 02 Dec 2023 00:11:04 +0000 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r9Db3-009dcA-0A for pgsql-hackers@lists.postgresql.org; Sat, 02 Dec 2023 00:11:03 +0000 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-33339d843b9so81334f8f.0 for ; Fri, 01 Dec 2023 16:11:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1701475859; x=1702080659; darn=lists.postgresql.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=6/maNFyBBwc+Qr7/La2JxNBbjVdCFL/NZLhxUavuTkk=; b=Kmm2Zqd3YEuhNZt21vs7mYSKdXAtNwvj6ug8+KyV9VNvg2/i/ij2/1j7LaOJKjFA7C 0JVJBkwIPAoaoH/yruyDGWj7z7fkNqyki+hWPUCu65UyE1yvhae8AR1ULvGm+9YNGjEg N+Y/yjcx+F4RkN9cG7ltU+T7hWQ/QvDHHMS5XWOmttJ6VLSbBeKM6BxHghRYMmWNwXw8 BjWC4pAaofruxjjF+Dn7BNciw9PlNBZkmYfpA9ya3zAe4xBH2c8Jq0qbxlZSkqQy72jw 0vPWTbslWcI+uG9lo2jIi1a+f2KwQJQUNxNiPc3xuJhHOJ31x7XPgWwqTO0KeYWnLm5U pxfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701475859; x=1702080659; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6/maNFyBBwc+Qr7/La2JxNBbjVdCFL/NZLhxUavuTkk=; b=Ele0lILkNO5nNes0af4t37nBKAh5/9Rmlv+eEs8+4Xe/NP3Wvi2TSpVR1t8iCx7y3+ uzs5hYEy/Zh7Wjsv16o/mpWqumDoOdZusS0z4QOo8j0sGdjTDuw7A4Sq2MqbTgZeydhz 9NCg/EdJ2Z65vYZMsPVAMPOfunn0/SywqckeQxOeASchgONeLTuQhUNNRu/4Kl214sLp 9wC4SIXG/tXhYMvEfznVFWm9VLjBCzcF/TAUA5wKc7bDaDaSJLpHc6nnPnbjKUEIp1/X 9fj7h39TW2Ut4RZMhKvimgfQN8qZ+U76t/IlvdULCKh51+u7f6kzSMwDo1wHhIzqrIhw XaMg== X-Gm-Message-State: AOJu0Yy2IoA8QnDSl17katVEqtLt58dj2EHlZSaJ1at76dt7lb2g6tb1 DV+IN/zLM3mgZAsNG3E0UxYvVQ== X-Google-Smtp-Source: AGHT+IHJKf487rKdnqV0ehd46VEbuAuPqOK3xsksLQvtSWTZQAzRjhS7BO+wghiD0POfzQWCFtlE+A== X-Received: by 2002:adf:e88e:0:b0:333:2fd2:5d2d with SMTP id d14-20020adfe88e000000b003332fd25d2dmr1887451wrm.95.1701475858857; Fri, 01 Dec 2023 16:10:58 -0800 (PST) Received: from [10.137.0.17] (ip-86-49-229-30.bb.vodafone.cz. [86.49.229.30]) by smtp.gmail.com with ESMTPSA id dr6-20020a5d5f86000000b003316b38c625sm5374977wrb.99.2023.12.01.16.10.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 01 Dec 2023 16:10:58 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Gjp3mspxLuJqRhNxJX0y7ZuF" Message-ID: <39706e78-cc03-01b1-ee17-4592e40b7312@enterprisedb.com> Date: Sat, 2 Dec 2023 01:10:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: logical decoding and replication of sequences, take 2 Content-Language: en-US To: Amit Kapila Cc: "Hayato Kuroda (Fujitsu)" , "Zhijie Hou (Fujitsu)" , Ashutosh Bapat , PostgreSQL Hackers , Masahiko Sawada , Peter Eisentraut , Dilip Kumar References: <652f6e81-f71b-b760-b1bb-ab078b8dbe53@enterprisedb.com> <36f3a200-f185-887c-da08-fdc866436e6c@enterprisedb.com> <195be236-7580-72c6-97c7-59f06c4e093c@enterprisedb.com> <4954a4f8-ba9d-d352-571b-7b94372ea5ae@enterprisedb.com> <418ff5ac-1664-9038-8ac6-0dd308b5df07@enterprisedb.com> From: Tomas Vondra In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Gjp3mspxLuJqRhNxJX0y7ZuF Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 11/30/23 12:56, Amit Kapila wrote: > On Thu, Nov 30, 2023 at 5:28 AM Tomas Vondra > wrote: >> >> 3) "bad case" - small transactions that generate a lot of relfilenodes >> >> select alter_sequence(); >> >> where the function is defined like this (I did create 1000 sequences >> before the test): >> >> CREATE OR REPLACE FUNCTION alter_sequence() RETURNS void AS $$ >> DECLARE >> v INT; >> BEGIN >> v := 1 + (random() * 999)::int; >> execute format('alter sequence s%s restart with 1000', v); >> perform nextval('s'); >> END; >> $$ LANGUAGE plpgsql; >> >> This performs terribly, but it's entirely unrelated to sequences. >> Current master has exactly the same problem, if transactions do DDL. >> Like this, for example: >> >> CREATE OR REPLACE FUNCTION create_table() RETURNS void AS $$ >> DECLARE >> v INT; >> BEGIN >> v := 1 + (random() * 999)::int; >> execute format('create table t%s (a int)', v); >> execute format('drop table t%s', v); >> insert into t values (1); >> END; >> $$ LANGUAGE plpgsql; >> >> This has the same impact on master. The perf report shows this: >> >> --98.06%--pg_logical_slot_get_changes_guts >> | >> --97.88%--LogicalDecodingProcessRecord >> | >> --97.56%--xact_decode >> | >> --97.51%--DecodeCommit >> | >> |--91.92%--SnapBuildCommitTxn >> | | >> | --91.65%--SnapBuildBuildSnapshot >> | | >> | --91.14%--pg_qsort >> >> The sequence decoding is maybe ~1%. The reason why SnapBuildSnapshot >> takes so long is because: >> >> ----------------- >> Breakpoint 1, SnapBuildBuildSnapshot (builder=0x21f60f8) >> at snapbuild.c:498 >> 498 + sizeof(TransactionId) * builder->committed.xcnt >> (gdb) p builder->committed.xcnt >> $4 = 11532 >> ----------------- >> >> And with each iteration it grows by 1. >> > > Can we somehow avoid this either by keeping DDL-related xacts open or > aborting them? I I'm not sure why the snapshot builder does this, i.e. why we end up accumulating that many xids, and I didn't have time to look closer. So I don't know if this would be a solution or not. > Also, will it make any difference to use setval as > do_setval() seems to be logging each time? > I think that's pretty much what case (2) does, as it calls nextval() enough time for each transaction do generate WAL. But I don't think this is a very sensible benchmark - it's an extreme case, but practical cases are far closer to case (1) because sequences are intermixed with other activity. No one really does just nextval() calls. > If possible, can you share the scripts? Kuroda-San has access to the > performance machine, he may be able to try it as well. > Sure, attached. But it's a very primitive script, nothing fancy. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------Gjp3mspxLuJqRhNxJX0y7ZuF Content-Type: application/x-compressed-tar; name="scripts.tgz" Content-Disposition: attachment; filename="scripts.tgz" Content-Transfer-Encoding: base64 H4sIAAAAAAAAA+1YbW/aSBDO1+6vmEu5BnJxsHlVQhKJEieKRMmJEN19OAmMvZhVje1612mk qv/9Zv1CTULgLgqkUT0fwHjnffaZnSUI3UM+3dkoqUiNWk1+a826mv2WVK3is1arVyu1RrNZ b+6omtpsaDugbtatmEIujAAAv2mwmm/1+hul97+VQx6Ux8wtjw0+JeQ9uOFsTAPwJiACw+WG KZjnchAeBKELngvUMKdgOoy6gvzd7gxuTjUsI+l0r/Qe/mjUyPnHXvuTfiooF4RMQjdSIcWH 3AyYL+AbIe/ix9OChs8+/+JAIRYDxYRdgcymISiIXTg7A4uOQ/vQ8WyonH3QlvBz6lBTgG8P rcDzhwH1HYbyaHbIHU8U96Qv0eNe6f9qNAOKngyRF1U6K3UfQPzDoqZnMdfeK7WWWUNz9pi6 mEbFlcYKSe5AmUAhSZEioBBld+7VGSRSSuFbzFQ+RK/LUu/3uWIZB8oq7YzcMv6TE/36gvwj 2Az9JDd6V+8MYB8u+tefZNBptDKsoU3F0Jwark35YrS92243/dxjrumEFlXumcVlJlSMnkgj 5N17uX38wJswh0LI0SL4NJgcgOWBmDIOzOWCGtYxskruJVGcQOKBjAFjiutTmycVPiSyXw0m YOIFMDbMz9S1pGkJciEXuUOpD1pqBn2AAGsVWKDYoPgw8m2sr6xDnJFRhs33AvEomfHr7xhj nMnTkTCYI+uqLUv7CBmpOfXmZS4kBUANcudaY1AUNlHoPeOCp8GTeAviYvqCLOzXE0hBFifn 8YYLZjKmfflGYhyxzkwQxhjLUcZUfglxX1ESebY7pjZzW5E7CQubQOKQSN6nIpkl3krcTIQE FA2sqyjN38+FuEQFiJkv3ZX+pCscNwe1UAp3BQXDEdiITG82M1yLE1lTJtdGyI7plV1n1MIt lKR090nPCmyJD/gywmbqhuW5lCQpkDaZWFyXaQuZY0WucXNKZ8bDKiSsywqAMbKZ72QccOm9 uDMckmmLyat5VpZLHKAfAmoq4HNIo84sAmbbmKu/2l0FbdpyRz3Wq9TUuepwvNDdLU9icqF+ WQXxghItrFYR1yx1+SA1LQHOLJrVGXEqKefztHqhWK1WqcSKX/uc/Vkp2zc2ZWPN/KdVK81o /tOaiOiqhvNfRaup+fy3Der09fZAh+s+9PU/u+2ODhe3vc7g6roXA2mYAqlYQo7Bbb93A3ce s6CNc0mBnOudbruvE0C6g6veoEU+6pdXveTF8Sm26T+giIC2vBmq2Iejo6PS8TEeC62Ih95T M8SWg719ZuAotQh04L9zPHij0xu+MjGNej7OFnelWFyezCiZ9oPiHo9mjt55ixQK0G33Lm/b lzr4jm/jBm8RQv5zwJWfL+JnxpXMr1Hz3lJQi4MAhpSMApnSPRTJjBsokGHEk4NiMlAcz7n0 zCtqK/Px2rB6M5SZODZmY03/xwNgfv+vVyry/l9R1Ure/7dByaz/NMaSa/Big32aPRmccwC+ EVq8GWzGxlr8N6o/8N+M5r9KNZ//tkLPwT9MAm8GNnVpIOcKlGSUF7WDmpq3hrdGDy/2m7Cx Dv9qcv+L8V+V+G/Umzn+t0EJvBevCDlGfxl6/Cfcy9tYi/+qlsG/nP/xsZrjfxuU4P/hfz15 B/hFaNm/5S9tYy3+6z/O/6qqSvxXm/Uc/9ugpfivFJ+6+L+2uznllFNOOb0Q/QuSeeaLACgA AA== --------------Gjp3mspxLuJqRhNxJX0y7ZuF--