比方说,我有我的表中的列定义如下:使用postgresql DB需要多少磁盘空间来存储NULL值?
"MyColumn" smallint NULL
存储的值如0,1或别的东西应该需要2个字节(1)。但是,如果将“MyColumn”设置为NULL,需要多少空间?它需要0字节吗?
是否有一些额外的需要的字节用于管理目的或这样的事情每列/行?
(1)http://www.postgresql.org/docs/9.0/interactive/datatype-numeric.html
添加列没有默认值大的表通常是一个快速的操作。跨越8列和9列之间的阈值(或者使用'MAXALIGN = 8'时为72和73')会慢吗? – 2016-09-28 17:35:26
@ PatrickBrinich-Langlois:是的,这是该机制的一个可能后果。在这些情况下,物理表的大小也会超过人们所预期的。由于涉及死元组等其他因素,效果不一定是线性的。如果现有的NULL位图(每行)有空间存放另一个NULL位,则表格根本无法生长,这是常见情况。 – 2017-07-11 14:51:25