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 1uwFT7-008JUz-1V for pgsql-general@arkaria.postgresql.org; Wed, 10 Sep 2025 07:42:18 +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 1uwFT6-00HSxW-8D for pgsql-general@arkaria.postgresql.org; Wed, 10 Sep 2025 07:42:16 +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 1uwFSL-00HOxh-3v for pgsql-general@lists.postgresql.org; Wed, 10 Sep 2025 07:41:29 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uwFSJ-001cfi-2W for pgsql-general@postgresql.org; Wed, 10 Sep 2025 07:41:28 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-61cb4374d2fso9868888a12.2 for ; Wed, 10 Sep 2025 00:41:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757490086; x=1758094886; darn=postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=iwLikh5H5+KkMR6Qhp1i9TXGa4nWoBENnV5gT6islNI=; b=BycMRTsMr5VuJM6FBimOAXzYH0cqlav8eed1AliFVmZcRPgCsNqwnCn/Inhy0c5aO1 shvucEpJmx7ABr1Ic44czR2/+iCEVGyzPP8eqFrO/N8qSHhyXcw1dh62sis5xGkxCt85 uK4HsA0B7I2zROS0FIiX1dXQyicTcOA04iUaJG9biY6v9liK2vIR7ZWFkF0XHdu0+i/w 6np0taNa9wYyaZwO7cFtcBkohwyoRRH8kyCm/zca/EGoJ6pMpXjObea+Sc32csQ7ALoI Rv+TKOXO581lt2XIlrcUoaKrdEp9KZrYWMPcn9lkSTqXhQxGcIRoazsA8w8GDo0iMhYd DLgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757490086; x=1758094886; h=content-transfer-encoding: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=iwLikh5H5+KkMR6Qhp1i9TXGa4nWoBENnV5gT6islNI=; b=e6DDGsjgASsQPNCy24xPgkiDdKXs8KVf3Q/ymQ15NyxbwGmwyPjoaGzxTA7991BWOX 2AsY5xbjKe7Qp+uaN4LrLBEnkQm2T+FeURLCal0Kl1Ma37YncmOuG4MQLm02j37Fv5Yo YzyqjiHPfKBWHo57sLmQf30Uk0ROtb88nZcn2V8so8KjeVy795aPHeKEVp9hnDbuuMDL VIwLseIG2XPDyGzhCWk2CriNb24j9o0LavIQUFk78XFwXdinjZAoFKUtFcFTCrpYoNMj dhfudr0i7eglzRN+NQYLZumCvy+A99DHnpPSFbZs8Ce2zkgsls5GpXY1aaPqcdUN5VZx uVBA== X-Forwarded-Encrypted: i=1; AJvYcCX2cBME8xVJOmemVErwPX2YNwl3d6cOotDLC5ZrQdJ7+Oz7bTmLTOxZs/mhBgpz1tXgMKfOznXs6lK444nn@postgresql.org X-Gm-Message-State: AOJu0Yw9dYgjGeH4nhhCaTLebjgDtRNRL+eLuxMBLbGJVyR9GF1jexfa 3Vtc9R3r25RhUjdBr02JOZL/tbUcITtacI47eWelmsiI5S8yHtcxav1euR4PzovokArjBDhqbrj CbDKr1CVYpZBCjgJBwYPPkxSBbrTHrF4ZRJ7UhGA= X-Gm-Gg: ASbGncumtl4fsXidNCrjyIjMaavnqJhVEL+jXD/6l30tKVvZb/4etA1JDIn1Ufrq0OG L85hcJYIw1iBrjzZ4Y42M/GWnIr8LY7vHtUKuWmzz6Y6HYczfnrB4/DIi5sbH682g9K866jwSzl q+6Kr4NyL6IHfCw2c4hckJ+H62V89swaBl5GD2Xwh8WJrOlm75o5KyjM83yxb0W7aNX3LNikdZd upo2A0Y8eHlZ+KKNQ== X-Google-Smtp-Source: AGHT+IFV1YEJqgXcB3ykeAS+EqZLL4vF0KkgdSx1ngoq2V3Mc/SlTYXrGFPp2sMCVT2AF9h+t1c+xhXYmC0JozY6PxI= X-Received: by 2002:a05:6402:27cf:b0:62d:c711:7a37 with SMTP id 4fb4d7f45d1cf-62dc7117dd3mr402464a12.5.1757490086108; Wed, 10 Sep 2025 00:41:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ellen Allhatatlan Date: Wed, 10 Sep 2025 08:41:14 +0100 X-Gm-Features: AS18NWDvK3-rMBCB9hfyxTChzJZb2490daf8wQ1ntQOz9nZNhxsPRnlWclcDbdY Message-ID: Subject: Re: MVCC and all that... To: Justin Cc: Merlin Moncure , pgsql-general Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi, and thanks for your input, Just before I reply - if you (at least here in Ireland - Google's answers vary per location, unlike Duckduckgo's) search for "firebird mvcc mechanism" the "AI assistant" tells me twice that FB's MVCC implementation is "like PostgreSQL's"... I'll investigate further and report back. Igor Rogov's book looks like a good place to start! > 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. Pity - I took the guy at his word when he said that PostgreSQL was just different, not better or worse. > 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 prod= uction database with a high TPS rate. OK - I'm going to run the benchmarks myself and see what happens - but I"m sure he didn't pick that test for nothing - come to think of it, the table stable structure is bizarre! > 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. This is where things become interesting. Firebird actually has 3 process/threading models - and they manage to maintain these with a team that is *_much_* smaller than the PostgreSQL one - FB is a minnow compared to PG! AIUI, Michael Stonebraker suggested that the process model would/should be "upgraded" to a threaded one at some point in the system's developement? > Number of open connections. so firebird can do 1000 open sessions with = a smaller memory footprint, still can not have 1000 simultaneous running s= essions unless we have 1000 CPU's. Where is the win here?? We should be ma= naging resources better on the application side, not opening thousands of c= onnections that sit idle doing nothing. Agreed on that point. > On autonomous transactions we have procedures now that allow transactions= inside of transactions that can be committed and rollbacked. that has bee= n around for several years now. OK. > 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. OK again. I'm just wondering if the single file per database isn't a fundamental architectural flaw in itself? AIUI, you could have mulitple files (back in 32-bit land) "chained" - but (again AIUI) the same table could be spread over x files - all "intermingled"... weird. > "PostgreSQL has a relatively simple, but fast query planning algorithm" = Compared to what.... What feature is PG missing these days... the only th= ing 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 t= o itself I am taking too long maybe go back to the planning stage... Quer= y Hints that have been discussed endlessly. Adding hints adds its own prob= lems and has become a big mess for databases that support it. I know - personally, I'm in favour of the PostgreSQL approach - rather than improve the hints, improve the planner! Plus, if you really want to, you can go here: https://www.postgresql.org/docs/current/runtime-config-query.html and, for example SET enable_seqscan =3D OFF; Plus, there is/are extension(s) which allow one to provide hints - I did think this was a bit of a whopper alright! > Multiple transactions per connection. I am asking WHY is that a feature.= when one can have multiple sessions, what is the difference? running mul= tiple transactions in single or multiple sessions means moving part of tra= nsaction logic into the application space. What do we gain here..... No idea - I'll take your word for it! > No application packaging. This Oracle thing that firebird has duplicate= d at some level. we can simulate this with namespace/schemas. Again, I'm not too sure of my ground here - but I do know that Oracle (and SQL Server) are ahead in this domain. > There are litigmate points here > Compression, > not being able to return partials result sets from functions > XID being 32 bit There's a lot of talk about 64 bit ones - FB has 48 bit ones AIUI - that could kick the can down the road for PostgreSQL at the price of 2 bytes per record - is it worth it to alleviate the difficulties associated with VACUUM-ing? > anonymous functions in PG have several limitation not just input argument= s (not sure i see the need for that) > Temporary tables are a pain and cause issues for big databases > The article is unfair in many places.. Accepted now - thanks for your input. --=20 El!