9.3 9.4 9.5 9.6 10 11 12 13 14 Current(15)
阿里云PostgreSQL 问题报告 纠错本页面

附录 K. PostgreSQL限制

表 K.1描述了PostgreSQL的各种硬性限制。 但是,在达到绝对硬限制之前,可能会先受到现实的限制,例如性能限制或可用磁盘空间。

表 K.1. PostgreSQL限制

项目上限值说明
数据库大小不限 
数据库数量4,294,950,911 
每个数据库的关系数量1,431,650,303 
关系大小32 TB基于BLCKSZ为缺省的8192字节
每个表的记录数受限于可以放到4,294,967,295个页中的元组数 
表格每列1,600进一步受限于元组大小适合单个页面;请参见下面的注释
结果集中的列1,664 
字段大小1 GB 
每个表的索引数不限受每个数据库最大关系数的约束
每个索引的列数32可以通过重新编译PostgreSQL增大
分区键32可以通过重新编译PostgreSQL来增加
标识符长度63字节可以通过重新编译PostgreSQL增大
函数参数100可以通过重新编译PostgreSQL来增加
查询参数65,535 

表的最大列数进一步减少,因为要存储的元组必须适合单个8192字节的堆页。例如,不包括元组头部, 由1600个int列组成的元组将消耗6400字节,并可以存储在堆页中,但由1600个 bigint列组成的元组将消耗12800字节,因此无法放入堆页中。 类型为textvarcharchar的可变长度字段, 当值足够大时,可以在表的TOAST表中以离线方式存储。在表的堆中,只需保留一个18字节的指针。 对于较短的可变长度字段,使用4字节或1字节字段头,并将值存储在堆元组内部。

从表中删除的列也会影响最大列限制。此外,尽管在元组的空位图中将新创建的元组的删除列值内部标记为空,但空位图也占用空间。