so, what about my argument that PG has 23 bytes overhead per row and your space win is very small compared to that overhead?
Is that an innate property or a current implementation detail?
price for various features, like ACID.
It’s the current implementation as of PG 8.2, I think. It’s [0] been there for a long time, in any case, and is unlikely to change in the near future.
[0]: https://www.postgresql.org/docs/current/storage-page-layout....
It’s orthogonal, and also technically incorrect – the row overhead itself is indeed 23 bytes (less NULL bitmap), but it gets aligned to 24 bytes. Run pg_column_size(ROW()) if you’d like to check.
The fact that this overhead exists has nothing to do with the 8.6 GB of wasted space on the INTs.
As to the maximal 8.6 GB mentioned, that's not nothing, _especially_ for RAM. Disk is cheap, but RAM isn't. If you have a smaller instance – say, an r6i.xlarge on AWS (4 vCPU, 32 GB RAM), that's 1/4 of the entire DB's memory.