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 1sCKwk-004uXW-ES for pgsql-general@arkaria.postgresql.org; Wed, 29 May 2024 15:10:35 +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 1sCKwk-00Fc6L-Ay for pgsql-general@arkaria.postgresql.org; Wed, 29 May 2024 15:10:34 +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 1sCKwj-00Fc6C-Vs for pgsql-general@lists.postgresql.org; Wed, 29 May 2024 15:10:33 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sCKwh-002XHY-BZ for pgsql-general@postgresql.org; Wed, 29 May 2024 15:10:32 +0000 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-a626777f74eso263314566b.3 for ; Wed, 29 May 2024 08:10:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20230601.gappssmtp.com; s=20230601; t=1716995429; x=1717600229; darn=postgresql.org; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to; bh=j0cIkXnC1BUnru45R4/yjE4lNUj11k/IQWiJBilQ9wg=; b=mJqWZaBQRAySiEwA9e+yn420jJ2MHRKAIaGFUHVioGHvc7NlSmJJtLcvNnOEMYXUKQ Iv8WGWh18MxpvU3Def8f4cX+oHzVcYQ9l23YoaCHfb7H7vUwBomTl+ntKn98kJbpqMkX 6n2XZHtAXsH0g3EJ83C07ehhgFhS+OJ3MjmaO/7RIm6Nr3L3TunrBML+RqA/Ol2Xmgld aKqROpgdcfCGWkxCfEW7guJm/qHcyV+1XBxdI5AKlOeyC4SXJYb5d+BfPeT2yAo24Hip G2zhhZQRdDxZGJ92WvnzT4YXW58cnwVc8BJ2ZHOEmZJbxM62x7rvuPKpaug7ZQPBnq+i xucQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716995429; x=1717600229; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=j0cIkXnC1BUnru45R4/yjE4lNUj11k/IQWiJBilQ9wg=; b=P2YzPBQDhfVh1nkucYjxK+CHxfmmhga44KUz/GFj6RA3ix5sLzFvDLPim01I/FnJq4 YA5WekQ4h/LfxsRXcPhuhOpC6CSIcI3iKYWWomSO520UD5ppOUsKVX1qiY5Ngf/CDVSV WsdKW7xEcX6YNcWMsUAm0gmL1zIKWrnkwkmYwhrbmVJIhV/rykdTEbihJBjAr84TnFOK cBshTOcg04JqbqeJYmoV94LnaiZAj4CES+ntYO0fg5ZYg6ttDlz1ZKAQAfS/kc8l/GkZ 7+wZuw6Ad2zktyaA1nXkJwJi7FBUARRQ3soO6/XZ8dbxsEAdYeYnfcYyp7wkKm19yAKa 8fXg== X-Gm-Message-State: AOJu0YwWvzxwyPUFFwctBEn5lVKIzXko6O5+a3g+BJDCDH3s5/hE7AYH d8NoTMG+LXuiEmx+mqHTPyAUZIBa7WUUjaF1mxMz4WgLVRAT9IP0pZnpbsrJe0uRMMg+tqJXmHK E X-Google-Smtp-Source: AGHT+IHWvbTHLemR0MTG8kjgsc49j1r/Vi6xpri1nuo4s0hUzcicH7pcjLJAs2p0wAyaBt3QKnO0AA== X-Received: by 2002:a17:906:cc58:b0:a59:d2ac:3856 with SMTP id a640c23a62f3a-a62642e714emr1408724166b.22.1716995428501; Wed, 29 May 2024 08:10:28 -0700 (PDT) Received: from localhost.localdomain ([2001:871:5e:ed19:7736:9a80:1156:2d8c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a626cda4e18sm720470666b.200.2024.05.29.08.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 May 2024 08:10:28 -0700 (PDT) Message-ID: <7bbc12fe52d8907bd6c8a1421e30c6d3154ac42f.camel@cybertec.at> Subject: Re: Use of inefficient index in the presence of dead tuples From: Laurenz Albe To: Alexander Staubo , Tom Lane Cc: "pgsql-general@postgresql.org" Date: Wed, 29 May 2024 17:10:27 +0200 In-Reply-To: <2C67231C-0A63-4B9D-AA9D-8BF69D29BC3C@purefiction.net> References: <2771.1716944001@sss.pgh.pa.us> <2C67231C-0A63-4B9D-AA9D-8BF69D29BC3C@purefiction.net> Autocrypt: addr=laurenz.albe@cybertec.at; prefer-encrypt=mutual; keydata=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 +AnW5l0HsQcY9ntFL/zEBOaonjdJf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.4 (3.50.4-1.fc39) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Wed, 2024-05-29 at 14:36 +0200, Alexander Staubo wrote: > > On 29 May 2024, at 02:53, Tom Lane wrote: > > I'm unpersuaded by the idea that ANALYZE should count dead tuples. > > Since those are going to go away pretty soon, we would risk > > estimating on the basis of no-longer-relevant stats and thus > > creating problems worse than the one we solve. >=20 > Mind you, =E2=80=9Cpretty soon=E2=80=9D could actually be =E2=80=9Chours"= if a pg_dump is running, > or some other long-running transaction is holding back the xmin. Granted, > long-running transactions should be avoided, but they happen, and the > result is operationally surprising. Don't do these things on a busy transactional database. > I have another use case where I used a transaction to do lock a resource > to prevent concurrent access. I.e. the logic did > =E2=80=9CSELECT =E2=80=A6 FROM =E2=80=A6 WHERE id =3D $1 FOR UPDATE=E2=80= =9D and held that transaction open > for hours while doing maintenance. That's a dreadful idea. >=20 > Just to clarify, this is a real use case, though the repro is of course > artificial since the real production case is inserting and deleting rows > very quickly. No doubt. Still I think that your main trouble are long-running transactions. They will always give you trouble on a busy PostgreSQL database. You should avoid them. Yours, Laurenz Albe