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 1tbDGh-008wt6-Df for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Jan 2025 06:34:16 +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 1tbDGf-00B4hB-Lc for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Jan 2025 06:34:13 +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 1tbDGf-00B4h3-3B for pgsql-hackers@lists.postgresql.org; Fri, 24 Jan 2025 06:34:13 +0000 Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tbDGb-001DkJ-0n for pgsql-hackers@postgresql.org; Fri, 24 Jan 2025 06:34:12 +0000 Received: by mail-vs1-xe32.google.com with SMTP id ada2fe7eead31-4aff1c57377so1010386137.0 for ; Thu, 23 Jan 2025 22:34:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=singh-im.20230601.gappssmtp.com; s=20230601; t=1737700447; x=1738305247; darn=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=4ooKWoJBUKDjxlOnUEazMvzsgMdErZB1qOrkkif+4U4=; b=oHz7GHstOzAP5u/fMD3bXW8TXlLLQI2Wigbg/utU0S5YXxCPhfU1fymw00xiCYpwFW 3r3XO98peTHXJJcgmZgAFzeF9ZNyL6f2b2MjqyruHA7F3eBcak0m0bZX1J4sQwdvY38L IFmBhFAsZXdHIJCY4IA+dr9zY1ZS+G4NOLu95vKmzFYYeIrYf3W/1SW9HKDWEm6lB3bm b/ZRylXyjjfuV0KvFN59QdqWZ/F3gDOJCfrNZ/M6PySKZco2dzSeM7WkxqBta0fEsBIo H4A4XCxaLjxjCI+F1FS/W2O7kmdiLkO2LjkY5x6IGJvY2AMdu4GhapWySAZ0kBIAXgil 7Lkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737700447; x=1738305247; 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=4ooKWoJBUKDjxlOnUEazMvzsgMdErZB1qOrkkif+4U4=; b=hPmQmDuiMVOAT3JzNV5IsI3M3xfiReQV4B/jgAt0JVwqfFqjTEtAXmPKBiDsXVWPpM LMjOP8IWAz+fOv9YAtcectqPw3jk/APvCYoi0TSL7qpNCE4qnJuRzasqpxpd48s7PKOo kYIV01SCxsCU3imdU2l0cV0VF/1hLrQYLoSuKyFnXNuO3zDH7JG6iGcYfjI9jN3uvbzL Mw+ieHDaOKDuZmVV57Q/x5Vf4cIbSZdH4sCbYVsP/Hi95daHvWxmh2JPL5CC2G6BRAnc hsiJLS9U/r5AkwFEcULm2UJvhd92yY/9QPK+IrnjPQIQkfxhD1A3lJ45dgq1gzvDKl/G gDkg== X-Gm-Message-State: AOJu0Ywj/s5HuS/zQrSgmDxwuLzlNIskqtZmMr1Q3pwFYO+IDlEKHlKy +v6BWvD+ImgtRZfSVR7qAt6we3YaV8H1uxBWzXnerIsDqrdGDTpBghje6C9TiaxVesMDqKEVF/r PYD2dOhYsOs8I+Bz94RCSxoSMD+akqQ== X-Gm-Gg: ASbGncs0/QpAZfSIq92ES/LxOMOucmDNR69MFtpMXQcF5Tl5jP43gbvtooZF6g+OR3r h1Gh7SjipobbjBL6COrh0PHHANAiWGZzQ+5bb+geK0biHwY6vGOR4dkG4QHsxg1C4j45+fr7Lhh eTacW3ZVzEQCZDUis7IWY= X-Google-Smtp-Source: AGHT+IG3heiMKTqUCVzzub7SitP3Dx2W75E3Fr/Jg+FGMR3+6f3SHlvZGXYQSxt3NkwBOZ0+C/kR1j99PlcPIJ0i1l8= X-Received: by 2002:a05:6102:5043:b0:4b6:377e:5653 with SMTP id ada2fe7eead31-4b6f79f15e7mr5278474137.2.1737700446734; Thu, 23 Jan 2025 22:34:06 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Gurjeet Singh Date: Thu, 23 Jan 2025 22:33:29 -0800 X-Gm-Features: AWEUYZnDYOZ7b_MX6cYQc5rx_qEfXkrC_BlddugYGwQbIIgoWHPIDokLttvJOo0 Message-ID: Subject: Re: Disabling vacuum truncate for autovacuum To: Postgres Hackers Cc: Will Storey , Laurenz Albe Content-Type: multipart/mixed; boundary="000000000000daab6f062c6de99b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000daab6f062c6de99b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable (moving discussion to -hackers, for patch-review) On Mon, Dec 16, 2024 at 11:30=E2=80=AFPM Laurenz Albe wrote: > > On Mon, 2024-12-16 at 16:25 -0800, Will Storey wrote: > > I would like to disable vacuum's truncate behaviour for autovacuum. > > Previously I had an outage due to its access exclusive lock when it was > > replicated to a hot standby. I can attest to one production outage caused by this behaviour of autovacuu= m. The truncate operation performed by autovacuum, when being replayed on the replica, was blocked by a query. Any new queries on that relation were bloc= ked by replication. > > When that outage happened it was from a VACUUM call in a cronjob rather > > than autovacuum. I now run such VACUUMs with TRUNCATE false which avoid= s > > the issue for these. However I've realized that autovacuum could cause = this > > as well. > > > > I believe the only way to disable this for autovacuum is by changing th= e > > vacuum_truncate storage parameters on tables. (Ignoring the now removed > > old_snapshot_threshold option). > > Yes, you can only do that table by table. That is unfortunate. Although doing so provides a granular control over whi= ch relations one would like to exclude from truncation, it may not always be desirable; a DBA/sysadmin may want to prevent this problem system-wide. Also, this not really scalable since it requires that a maintenance operati= on regularly connect to every database and apply this setting to all the relat= ions, for the fear that there may be new objects somewhere in the cluster since l= ast maintenance, which may cause this problem. It would be error prone, too, considering that the list of databases in a cluster may change over time. A= nd then there's the added burden of monitoring the status of this maintenance operation to ensure it's running successfully every time. Turning on a system-wide setting that disables autovacuum truncation may lo= ok like a heavy hammer, but in certain situations this may be preferable to th= e risk of causing outage in production systems. It may be preferable to let t= he system consume disk space by not truncating the tables, as opposed to runni= ng the risk of blocked queries. Disk is cheap, and is possibly already being monitored in a production system. I understand Jeremy's contention upthread against adding such a feature at global level, but I'm in favor of adding this feature since it prevents a s= udden and unpredictable impact on production systems, and instead leads to a grad= ual escalation of the problem that can be monitored and addressed by a sysadmin= /DBA at a time that's convenient for them. > > I am also wondering if having an autovacuum setting to control it would= be > > a good idea for a feature. > > I'm all for that. Please see attached an initial patch to disable truncation behaviour in autovacuum. This patch retains the default behavior of autovacuum truncatin= g relations. The user is allowed to change the behaviour and disable relation truncations system-wide by setting autovacuum_disable_vacuum_truncate =3D t= rue. Better parameter names welcome :-) One additional improvement I can think of is to emit a WARNING or NOTICE me= ssage that truncate operation is being skipped, perhaps only if the truncation would've freed up space over a certain threshold. Perhaps there's value in letting this parameter be specified at database le= vel, but I'm not able to think of a reason why someone would want to disable thi= s behaviour on just one database. So leaving the parameter context to be the = same as most other autovacuum parameters: SIGHUP. Best regards, Gurjeet http://Gurje.et --000000000000daab6f062c6de99b Content-Type: application/x-patch; name="autovacuum_disable_relation_truncation.v1.patch" Content-Disposition: attachment; filename="autovacuum_disable_relation_truncation.v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6adce9p0 Y29tbWl0IDg0ZThlZWJiODdiYzJjNThmZWFlODQ3ZWZkOTk1YmMwNTU3MDE2ODgKQXV0aG9yOiBH dXJqZWV0IFNpbmdoIDxndXJqZWV0QHNpbmdoLmltPgpEYXRlOiAgIFRodSBKYW4gMjMgMTk6Mzc6 MzMgMjAyNSAtMDgwMAoKICAgIFZlcnNpb24gMQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKaW5kZXggMGFiOTIxYTE2OS4uMTdlMjJjMDhlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMKQEAgLTExNSw2ICsxMTUsNyBAQAogICogR1VDIHBhcmFtZXRlcnMKICAqLwogYm9v bAkJYXV0b3ZhY3V1bV9zdGFydF9kYWVtb24gPSBmYWxzZTsKK2Jvb2wJCWF1dG92YWN1dW1fZGlz YWJsZV92YWN1dW1fdHJ1bmNhdGUgPSBmYWxzZTsKIGludAkJCWF1dG92YWN1dW1fd29ya2VyX3Ns b3RzOwogaW50CQkJYXV0b3ZhY3V1bV9tYXhfd29ya2VyczsKIGludAkJCWF1dG92YWN1dW1fd29y a19tZW0gPSAtMTsKQEAgLTI4MTEsMTIgKzI4MTIsMTYgQEAgdGFibGVfcmVjaGVja19hdXRvdmFj KE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkJKCF3cmFwYXJvdW5kID8gVkFD T1BUX1NLSVBfTE9DS0VEIDogMCk7CiAKIAkJLyoKLQkJICogaW5kZXhfY2xlYW51cCBhbmQgdHJ1 bmNhdGUgYXJlIHVuc3BlY2lmaWVkIGF0IGZpcnN0IGluIGF1dG92YWN1dW0uCi0JCSAqIFRoZXkg d2lsbCBiZSBmaWxsZWQgaW4gd2l0aCB1c2FibGUgdmFsdWVzIHVzaW5nIHRoZWlyIHJlbG9wdGlv bnMKLQkJICogKG9yIHJlbG9wdGlvbiBkZWZhdWx0cykgbGF0ZXIuCisJCSAqIGluZGV4X2NsZWFu dXAgaXMgdW5zcGVjaWZpZWQgYXQgZmlyc3QgaW4gYXV0b3ZhY3V1bS4gdHJ1bmNhdGUgaXMKKwkJ ICogdW5zcGVjaWZpZWQsIHVubGVzcyBpdCBpcyBkaXNhYmxlZCB2aWEgdGhlIEdVQyBwYXJhbWV0 ZXIuCisJCSAqCisJCSAqIFRoZSB1bnNwZWNpZmllZCBvcHRpb25zIHdpbGwgYmUgZmlsbGVkIGlu IHdpdGggdXNhYmxlIHZhbHVlcyB1c2luZworCQkgKiB0aGVpciByZWxvcHRpb25zIChvciByZWxv cHRpb24gZGVmYXVsdHMpIGxhdGVyLgogCQkgKi8KIAkJdGFiLT5hdF9wYXJhbXMuaW5kZXhfY2xl YW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwotCQl0YWItPmF0X3BhcmFtcy50cnVuY2F0 ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOworCQl0YWItPmF0X3BhcmFtcy50cnVuY2F0ZSA9 IGF1dG92YWN1dW1fZGlzYWJsZV92YWN1dW1fdHJ1bmNhdGUKKwkJCQkJCQkJCT8gVkFDT1BUVkFM VUVfRElTQUJMRUQKKwkJCQkJCQkJCTogVkFDT1BUVkFMVUVfVU5TUEVDSUZJRUQ7CiAJCS8qIEFz IG9mIG5vdywgd2UgZG9uJ3Qgc3VwcG9ydCBwYXJhbGxlbCB2YWN1dW0gZm9yIGF1dG92YWN1dW0g Ki8KIAkJdGFiLT5hdF9wYXJhbXMubndvcmtlcnMgPSAtMTsKIAkJdGFiLT5hdF9wYXJhbXMuZnJl ZXplX21pbl9hZ2UgPSBmcmVlemVfbWluX2FnZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKaW5kZXggMzhjYjllOTcwZC4uNDAzNjhlMzM5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKQEAgLTE1MDksNiArMTUwOSwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmln dXJlTmFtZXNCb29sW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJhdXRv dmFjdXVtX2Rpc2FibGVfdmFjdXVtX3RydW5jYXRlIiwgUEdDX1NJR0hVUCwgVkFDVVVNX0FVVE9W QUNVVU0sCisJCQlnZXR0ZXh0X25vb3AoIkRpc2FibGVzIGF1dG92YWN1dW0gYmVoYXZpb3Igb2Yg dHJ1bmNhdGlpbmcgcmVsYXRpb25zLiIpLAorCQkJTlVMTAorCQl9LAorCQkmYXV0b3ZhY3V1bV9k aXNhYmxlX3ZhY3V1bV90cnVuY2F0ZSwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9 LAorCiAJewogCQl7InRyYWNlX25vdGlmeSIsIFBHQ19VU0VSU0VULCBERVZFTE9QRVJfT1BUSU9O UywKIAkJCWdldHRleHRfbm9vcCgiR2VuZXJhdGVzIGRlYnVnZ2luZyBvdXRwdXQgZm9yIExJU1RF TiBhbmQgTk9USUZZLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRleCA1NGUw MWM4MWQ2Li5jNzU5NzQwN2QyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAt MjgsNiArMjgsNyBAQCB0eXBlZGVmIGVudW0KIAogLyogR1VDIHZhcmlhYmxlcyAqLwogZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgYXV0b3ZhY3V1bV9zdGFydF9kYWVtb247CitleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBhdXRvdmFjdXVtX2Rpc2FibGVfdmFjdXVtX3RydW5jYXRlOwogZXh0ZXJuIFBH RExMSU1QT1JUIGludCBhdXRvdmFjdXVtX3dvcmtlcl9zbG90czsKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgYXV0b3ZhY3V1bV9tYXhfd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgYXV0 b3ZhY3V1bV93b3JrX21lbTsK --000000000000daab6f062c6de99b--