为什么postgresql最大的单表只能是32TB

作者:瀚高PG实验室 (Highgo PG Lab)- 徐云鹤
为什么postgresql最大的单表只能是32TB?
这需要从数据文件来说起。
在postgresql中,一张表对应多个数据文件。
数据文件中存储的是page,每一个page都有一个单独的编号,因为pg寻址空间采用的是32位,也就是2^32=4294967296,也就是一组数据文件中最多存放这些page。
按照默认的block_size设置为8K,可以计算出来一组数据文件最大的大小是32T。

这里,注意我说的是一组,而不是一个。
一组说的是单张表使用的一批数据文件。

默认的,数据文件大小最大被设置为1G。
这样理论上单张表可以产生多达32000个数据文件。
而且,每组数据文件的页编号是连续的。
也就是,如果一组中上一个数据文件的最后一页编号是0x14159265,那么下一个数据文件第一个页编号是0x14159266而不是0x00000000。

这样就明白了为什么最大的单表只能是32TB。
如果,使用32K的block_size,那么可存放的最大数据量就是4倍的32T,也就是128T了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值