codecamp

PostgreSQL 限制

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

表 K.1. PostgreSQL限制

项目 上限值 说明
数据库大小 不限  
数据库数量 4,294,950,911  
每个数据库的关系数量 1,431,650,303  
关系大小 32 TB 基于BLCKSZ为缺省的8192字节
每个表的记录数 受限于可以放到4,294,967,295个页中的元组数  
每个表的列数 1600 同时受限于元组大小,需要能放到单个页中; 参考下面的说明
字段大小 1 GB  
标识符长度 63字节 可以通过重新编译PostgreSQL增大
每个表的索引数 不限 受每个数据库最大关系数的约束
每个索引的列数 32 可以通过重新编译PostgreSQL增大
分区键数量 32 可以通过重新编译PostgreSQL增大

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

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


PostgreSQL 样式指导
PostgreSQL 首字母缩写词
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }