doc: Add appendix detailing some limits of PostgreSQL
authorPeter Eisentraut
Thu, 29 Nov 2018 12:58:28 +0000 (13:58 +0100)
committerPeter Eisentraut
Thu, 29 Nov 2018 13:01:11 +0000 (14:01 +0100)
This used to be on the web site but was removed.  The documentation is
a better place for it anyway.

Author: David Rowley 
Reviewed-by: John Naylor
Discussion: https://www.postgresql.org/message-id/flat/CAKJS1f_dKdejdKB94nKZC9S5NzB-UZRcAKkE84e=JEEecDuotg@mail.gmail.com/

doc/src/sgml/filelist.sgml
doc/src/sgml/limits.sgml [new file with mode: 0644]
doc/src/sgml/postgres.sgml

index 0a10df640222b83aa95553a14518e461b777ea57..5dfdf54815ec8944f4480a3699d56bfb3df68ec1 100644 (file)
 
 
 
+
 
 
 
diff --git a/doc/src/sgml/limits.sgml b/doc/src/sgml/limits.sgml
new file mode 100644 (file)
index 0000000..ab85413
--- /dev/null
@@ -0,0 +1,120 @@
+
+
+
<productname>PostgreSQL</productname> Limits
+
+   describes various hard limits of
+  PostgreSQL.  However, practical limits, such as
+  performance limitations or available disk space may apply before absolute
+  hard limits are reached.
+
+  <productname>PostgreSQL</productname> limitations
+  
+   
+    
+     Item
+     Upper Limit
+     Comment
+    
+   
+
+   
+    
+     database size
+     unlimited
+     
+    
+
+    
+     number of databases
+     
+     4,294,950,911
+     
+    
+
+    
+     relations per database
+     
+     1,431,650,303
+     
+    
+
+    
+     relation size
+     32 TB
+     with the default BLCKSZ of 8192 bytes
+    
+
+    
+     rows per table
+     limited by the number of tuples 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
+     below
+    
+
+    
+     field size
+     1 GB
+     
+    
+
+    
+     identifier length
+     63 bytes
+     can be increased by recompiling PostgreSQL
+    
+
+    
+     indexes per table
+     unlimited
+     constrained by maximum relations per database
+    
+
+    
+     columns per index
+     32
+     can be increased by recompiling PostgreSQL
+    
+
+   
+    partition keys
+    32
+    can be increased by recompiling PostgreSQL
+   
+   
+  
+
+  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
+  1600 bigint columns would consume 12800 bytes and would
+  therefore not fit inside a heap page.
+  Variable-length fields of
+  types such as textvarchar, and char
+  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.
+
+  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
+  null bitmap also occupies space.
+
index 142799316aa85d236cf6cf5d0697531d8299a7e6..96d196d22931ab9cad2400722446f10afe9d7359 100644 (file)
   &external-projects;
   &sourcerepo;
   &docguide;
+  &limits;
   &acronyms;