如何计算保存在磁盘上的表的大小? (PosgreSQL)

时间:2018-11-29 08:45:19

标签: postgresql

如何计算保存在磁盘上的表的大小? 在我的网上搜索中,如何根据以下公式计算表格的长度:

8KB×ceil(记录数/层(楼层(8KB×填充因子-24)/(28 + 1条记录的数据长度)))

示例:

Column    |     Type      |
aid      | integer       |
bid      | integer       |
abalance | integer       |
filler   | character(84) |

1条记录的数据长度=辅助(4个字节)+投标(4个字节)+余额(4个字节)+填充符(84个字节+ 1个字节)= 97个字节 记录的数据长度必须四舍五入为8个字节。

=> 1条记录的数据长度为104个字节。

因此,我认为1个字符包含在1个字节的内存中。 但是,“ filler”列可以输入84个字符“ a”(单字节)或84个字符“あ”(双字节)

我不知道为什么单字节字符中可以包含双字节字符? 你能向我解释这个问题吗?

1 个答案:

答案 0 :(得分:0)

要简单得多。使用pg_relation_size仅计算一个关系的大小(不使用关联的TOAST表和索引),或者使用pg_total_relation_size来计算所有关联的对象。