diff --git a/doc/src/sgml/limits.sgml b/doc/src/sgml/limits.sgml index d5b2b62..fe1b138 100644 --- a/doc/src/sgml/limits.sgml +++ b/doc/src/sgml/limits.sgml @@ -51,14 +51,14 @@ rows per table - limited by the number of tuples that can fit onto 4,294,967,295 pages + limited by the number of rows that can fit onto 4,294,967,295 pages columns per table 1600 - further limited by tuple size fitting on a single page; see note + further limited by row size fitting on a single page; see note below @@ -102,25 +102,29 @@ - The maximum number of columns for a table is further reduced as the tuple - being stored must fit in a single 8192-byte heap page. For example, - excluding the tuple header, a tuple made up of 1600 int columns - would consume 6400 bytes and could be stored in a heap page, but a tuple of + Tables and indexes, both, are referred to as relations in Postgres code. + + + + The maximum number of columns for a table is further reduced as the row + being stored must fit in a single database block (usually 8192-bytes). For example, + excluding the row-header, a row made up of 1600 int columns + would consume 6400 bytes and could be stored in a database block, but a row of 1600 bigint columns would consume 12800 bytes and would - therefore not fit inside a heap page. - Variable-length fields of + therefore not fit inside a database block. + Variable-length columns of types such as text, varchar, and char - can have their values stored out of line in the table's TOAST table when the + can have their values stored out of line in the table's TOAST table when the values are large enough to require it. Only an 18-byte pointer must remain - inside the tuple in the table's heap. For shorter length variable-length - fields, either a 4-byte or 1-byte field header is used and the value is - stored inside the heap tuple. + inside the row in the table's storage. For shorter length variable-length + columns, either a 4-byte or 1-byte column header is used and the value is + stored inside the row. Columns that have been dropped from the table also contribute to the maximum column limit. Moreover, although the dropped column values for newly - created tuples are internally marked as null in the tuple's null bitmap, the + created rows are internally marked as null in the rows's null bitmap, the null bitmap also occupies space.