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 1uw9NL-006aFp-1r for pgsql-general@arkaria.postgresql.org; Wed, 10 Sep 2025 01:11: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 1uw9NI-00FqqI-Kg for pgsql-general@arkaria.postgresql.org; Wed, 10 Sep 2025 01:11:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uw9NI-00Fqq9-3d for pgsql-general@lists.postgresql.org; Wed, 10 Sep 2025 01:11:52 +0000 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uw9NG-001ZNr-0z for pgsql-general@postgresql.org; Wed, 10 Sep 2025 01:11:51 +0000 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-3197f534179so5291856fac.2 for ; Tue, 09 Sep 2025 18:11:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757466709; x=1758071509; darn=postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=VhgNaKQHaeBLubMNt3lTjcCF6RSoO3zxmtbRuCUfBA8=; b=Wp1QDUDqQ9bCRf+hjYi4fKoNDlQhyPw37kWWCFLr5fTXwKPBHT8vV+ZFgpa211HUn7 tOjaQqHf9UFEtyaK/DIVzDYR1FJSqFtfr/GYqpCJyBTi9TqKbd5PT8FyYTTZpGxOORsS xqxJwj+/VbAKyv1NkJpBgKkM6jF4Dq/vjgBWkTraxHHXbohBofn57XTvvhe9AxzyPswI C94p+FzdlfVx54nHASgTbs2C/4uciSkg3FTr0vnqcipgKsmnfIMjAJLIedB6K+pZiNfe jwi0TOlo85BaWcXqe2fboiugiIrp3FFTYWibTG0LdpkB32xROrLbi+Y+357mn1HN90ND ftBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757466709; x=1758071509; h=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=VhgNaKQHaeBLubMNt3lTjcCF6RSoO3zxmtbRuCUfBA8=; b=pGyLQ2Bl8Fzb8m2qEDgVaz/1FBOn6H/38JfbtUUMdg9lvccBjhexneYmq5Il0SauYM dlDSCpH7AayfseJdCbQoEePVr+X5rpI2Qa0xPBY314M7B0wcea0Cg+l2uU7xKDNkQNDh vUx2NnGVo4bvCc/QtvhbKiltMfO+6y2vZ/b0bRSUi8FvPXtCqumybR3PzlAtKDGEy327 TX1ZLV7mezeQ5HWdJW+ffrOe17Wzxp86UpZsv3RRSInZTJ3P1INt953t2szgdWQSxpeu E+RazU9Zpqf/OiCWhO+WDuXvFmRtW7XrxtcdtzDSe+33BhN1zN+6gYo8wRWSzgN2MLvO gowg== X-Gm-Message-State: AOJu0YyFp9sDY2qgX/N/O68EpVofqBkPw1sxNCOQQrwmazan0ZfMbCHR 4ZFefvLpzX9h92wkn9SesRMPSDgOruvPWB7yVs8SsQvM990FM9LFeN/H4FwgVNqUpCZ+fLyvP3z j/W6Mp9LS43UXlaubLdQ65lLXsJ0dctts6g== X-Gm-Gg: ASbGncsCAIZy918rZaamm6k+8gbm/xuGDMLGkIJkyN6NAY+v9xVsLFVA2aCnA5/y+Am kZRu8b168ol/LfEUbvpbnxA59GQuMN9Erm12hSA+kWLKnsU2ofOu6IQpCuqw9kdm9WxkSuqpwan yJGa0NZtcxqEmJurdR0Jd3gFrRBhbUkeJAhcSQnCv/Li/+8h5gWQ8RwI2U1YlNRRPnWge20y5kc i3AfvQkyOSAKRZ+Uio= X-Google-Smtp-Source: AGHT+IGS4sLB60sDUYV48wObArSybKaoRw2AHKP854YFV0/VGmknjyxDaqag+Lvadq9LwPd4hd3nuidQEdp08raiLy0= X-Received: by 2002:a05:6870:b4a7:b0:314:b635:d7a7 with SMTP id 586e51a60fabf-32265036767mr7027996fac.41.1757466704196; Tue, 09 Sep 2025 18:11:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ron Johnson Date: Tue, 9 Sep 2025 21:11:33 -0400 X-Gm-Features: Ac12FXwqyZYTliG2FjrINcD8O_9f5mP6GJDqkEw0EzJeKJ7M1FenXmGfi6QoWbs Message-ID: Subject: Re: MVCC and all that... To: pgsql-general Content-Type: multipart/alternative; boundary="0000000000009bbd57063e681a61" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009bbd57063e681a61 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 9, 2025 at 8:41=E2=80=AFPM Justin wrote: > I read through the article its click bait/flame war just waiting to happe= n. > > Article is a list of cherry picked PG drawbacks that can be mitigated or > worked around. > > On the bulk updating. I'm shaking my finger at any one that locks up 25% > of a table with an update or delete. That is asking for problems in a > production database with a high TPS rate. > > The author brings up threaded vs multi-process. That's an old old old old > old conversation that has been shown there is no clear better way. > > Number of open connections. so firebird can do 1000 open sessions with = a > smaller memory footprint, still can not have 1000 simultaneous running > sessions unless we have 1000 CPU's. Where is the win here?? We should be > managing resources better on the application side, not opening thousands = of > connections that sit idle doing nothing. > > On autonomous transactions we have procedures now that allow transactions > inside of transactions that can be committed and rollbacked. that has be= en > around for several years now. > > Backup argument is cherry picking and not discussing pgBackrest and other > solutions or the use of tablespaces to isolate databases in a cluster at > the disk layer or disk snapshots. > > "PostgreSQL has a relatively simple, but fast query planning algorithm" > Compared to what.... What feature is PG missing these days... the only > thing I know it can't do is change the plan in the middle of the > execution stage. Which is not a query planner thing but the execution > layer saying to itself I am taking too long maybe go back to the plannin= g > stage... Query Hints that have been discussed endlessly. Adding hints > adds its own problems and has become a big mess for databases that suppor= t > it. > > Multiple transactions per connection. I am asking WHY is that a feature. > when one can have multiple sessions, what is the difference? running > multiple transactions in single or multiple sessions means moving part o= f > transaction logic into the application space. What do we gain here..... > > No application packaging. This Oracle thing that firebird has duplicate= d > at some level. we can simulate this with namespace/schemas. > > > I can keep going on here. > > There are litigmate points here > Compression, > not being able to return partials result sets from functions > XID being 32 bit > Would converting them to 64 bits require changing the on-disk structure of database files? > anonymous functions in PG have several limitation not just input > arguments (not sure i see the need for that) > Aren't transience and "ad hockery" the whole point of anonymous procedures? Thus, I don't see the point of passing them parameters, either= . (When I *do* need something similar, I build the DO block as a bash string variable with environment variables as "parameters", and then execute it via psql -c "$sql" More like a template, TBH. It's great for purging old data from tables, since I can bypass records who's DELETE statements fail due to a FK constraint. > Temporary tables are a pain and cause issues for big databases > I'd like to see GLOBAL TEMPORARY tables. Each connection gets its own private copy of the table, so that applications don't need to carry around CREATE TEMPORARY TABLE code with them. --=20 Death to , and butter sauce. Don't boil me, I'm still alive. lobster! --0000000000009bbd57063e681a61 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Tue, Sep 9, 2025 at 8:41=E2=80=AFPM Ju= stin <zzzzz.graf@gmail.com&g= t; wrote:
I read through the = article its=C2=A0click bait/flame war just waiting to happen.

Articl= e is a list of cherry picked=C2=A0PG drawbacks that can be mitigated or wor= ked around.=C2=A0 =C2=A0

On the bulk updating.=C2=A0 I'm shakin= g my finger at any one that locks up 25% of a table with an update or delet= e. That is asking for problems in a production database with a high TPS rat= e.

The author brings up threaded vs multi-process. That's an old= old old old old conversation that has been shown there is no clear better = way.=C2=A0

Number of open connections.=C2=A0 so firebird= can do 1000=C2=A0 open sessions with a smaller memory footprint,=C2=A0 sti= ll can not have 1000 simultaneous running sessions unless we have 1000 CPU&= #39;s. Where is the win here??=C2=A0 We should be managing resources better= on the application=C2=A0side, not opening=C2=A0thousands of connections th= at sit idle doing nothing.=C2=A0=C2=A0
=C2=A0=C2=A0
On=C2=A0autonomou= s transactions we have procedures now that allow transactions inside of tra= nsactions that can be committed and rollbacked.=C2=A0 that has been around = for several years now.

Backup argument is=C2=A0cherry=C2=A0picking a= nd not discussing pgBackrest and other solutions=C2=A0 or the use of tables= paces to isolate databases in a cluster at the disk layer=C2=A0 or disk sna= pshots.=C2=A0 =C2=A0

"PostgreSQL has a relati= vely simple, but fast query planning algorithm"=C2=A0 Compared to what= ....=C2=A0 What feature is PG missing these days...=C2=A0 the only thing I = know it can't do is change the=C2=A0 plan=C2=A0 in the middle of the ex= ecution stage.=C2=A0 Which is not a query planner thing but the execution l= ayer saying to itself=C2=A0 I am taking too long maybe go back to the plann= ing stage...=C2=A0 Query Hints that have been discussed endlessly.=C2=A0 Ad= ding=C2=A0hints adds its own problems and has become a big mess for databas= es that support it.=C2=A0=C2=A0

Multiple transactions per connection= .=C2=A0 I am asking WHY is that a feature.=C2=A0 when one can have multiple= sessions, what=C2=A0is the difference?=C2=A0 running multiple transactions= in single=C2=A0or multiple sessions means moving=C2=A0 part of transaction= logic into the application space. What do we gain here.....

=
No application packaging.=C2=A0 This Oracle thing that=C2=A0 fir= ebird has=C2=A0duplicated at some level.=C2=A0 we can simulate this with na= mespace/schemas.

=C2=A0=C2=A0
I can keep going on here.=C2=A0=C2= =A0
=C2=A0
There are litigmate points here
Compression,
not b= eing able to return partials result sets from functions
XID being 32 bit= =C2=A0

Would converting the= m to 64 bits require changing the on-disk structure of database files?
=C2=A0
anonymous functions in PG have several limitation not just i= nput arguments=C2=A0(not sure i see the need for that)=C2=A0

Aren't transience and "ad hocker= y" the whole point of anonymous procedures?=C2=A0 Thus, I don't se= e the point of passing them parameters, either.

(W= hen I do=C2=A0need something similar, I build the DO block as a bash= string variable with environment variables as "parameters", and = then execute it via psql -c "$sql"=C2=A0 More like a template, TB= H.=C2=A0 It's great for purging old data from tables, since I can bypas= s records who's DELETE statements fail due to a FK constraint.
=C2=A0
Temporary tables are a pain and cause issues for big databases

I'd like to see GLOBAL T= EMPORARY tables.=C2=A0 Each connection gets its own private copy of the tab= le, so that applications don't need to carry around CREATE TEMPORARY TA= BLE code with them.

--
Death to <Redacted>, and butter sauce.
Don't boil me= , I'm still alive.
<Redacted> lobster!
--0000000000009bbd57063e681a61--