Requirements v17
EDB Postgres Advanced Server has certain hardware and software requirements. PostgreSQL has some hard limits that are important to know about during your planning.
Hardware requirements
The following installation requirements assume that you selected the default options during the installation process. The minimum hardware requirements to install and run EDB Postgres Advanced Server are:
- 1 GHz processor
- 2 GB of RAM
- 512 MB of HDD
Additional disk space is required for data or supporting components.
Software requirements
User privileges
To perform an EDB Postgres Advanced Server installation on a Linux system you need superuser, administrator, or sudo privileges.
To perform an EDB Postgres Advanced Server installation on a Windows system, you need administrator privileges. If you're installing EDB Postgres Advanced Server on a Windows system that's configured with User Account Control enabled, you can assume the privileges required to invoke the graphical installer. Right-click the name of the installer, and select Run as administrator from the context menu.
Windows-specific software requirements
Apply the Windows operating system updates before invoking the installer. If the installer encounters errors during the installation process, exit the installation, and ensure that your Windows version is up to date. Then restart the installer.
See the release notes for the features added in EDB Postgres Advanced Server 16.
Hard limits
The following table describes various hard limits of PostgreSQL. However, practical limits such as performance limitations or available disk space might apply before absolute hard limits are reached.
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 |
Note
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 consumes 6400 bytes and can be stored in a heap page. But a tuple of 1600bigint
columns consumes 12800 bytes and therefore doesn't fit inside a heap page. Variable-length fields of types such astext
,varchar
, andchar
can have their values stored out of line in the table'sTOAST
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 were 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.