From e51160fa0bab7203e37094fbb0349b0c324b09e7 Mon Sep 17 00:00:00 2001 From: John Naylor Date: Tue, 20 Aug 2024 10:02:34 +0700 Subject: [PATCH] Document limit on the number of out-of-line values per table Document the hard limit stemming from the size of an OID, and also mention the perfomance impact that occurs before the hard limit is reached. Jakub Wartak and Robert Haas Backpatch to all supported versions Discussion: https://postgr.es/m/CAKZiRmwWhp2yxjqJLwbBjHdfbJBcUmmKMNAZyBjjtpgM9AMatQ%40mail.gmail.com --- doc/src/sgml/limits.sgml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/src/sgml/limits.sgml b/doc/src/sgml/limits.sgml index c549447013..f26f446671 100644 --- a/doc/src/sgml/limits.sgml +++ b/doc/src/sgml/limits.sgml @@ -135,4 +135,15 @@ created tuples are internally marked as null in the tuple's null bitmap, the null bitmap also occupies space. + + + Each table can store a theoretical maximum of 2^32 out-of-line values; see + for a detailed discussion of out-of-line + storage. This limit arises from the use of a 32-bit OID to identify each + such value. The practical limit is significantly less than the theoretical + limit, because as the OID space fills up, finding an OID that is still free + can become expensive, in turn slowing down INSERT/UPDATE statements. + Typically, this is only an issue for tables containing many terabytes + of data; partitioning is a possible workaround. +