我有一个像pg这样的表:
CREATE TABLE t (
a BIGSERIAL NOT NULL, -- 8 b
b SMALLINT, -- 2 b
c SMALLINT, -- 2 b
d REAL, -- 4 b
e REAL, -- 4 b
f REAL, -- 4 b
g INTEGER, -- 4 b
h REAL, -- 4 b
i REAL, -- 4 b
j SMALLINT, -- 2 b
k INTEGER, -- 4 b
l INTEGER, -- 4 b
m REAL, -- 4 b
CONSTRAINT a_pkey PRIMARY KEY (a)
);
Run Code Online (Sandbox Code Playgroud)
以上每行最多可添加50个字节.我的经验是,我需要另外40%到50%的系统开销,甚至没有任何用户创建的索引.所以,每行约75个字节.我将在表中有许多行,可能超过1450亿行,因此该表将推动13-14太字节.我可以使用什么技巧来压缩这个表?我的可能想法如下......
将 …
我有一个包含7列的表,其中5列将为null.我将有一个空列int,text,date,boolean,和money数据类型.该表将包含数百万行,其中包含许多空值.我担心空值会占用空间.
另外,你知道Postgres索引空值吗?我想阻止它索引空值.
我是数据库的新手.最近我开始使用timecaledb,这是PostgreSQL的扩展,所以我猜这也与PostgreSQL有关.
我观察到一种奇怪的行为.我计算了我的表结构,1个时间戳,2个双倍,所以每行总共24个字节.我从csv文件导入(通过psycopg2 copy_from)2,750,182行.我手动计算的大小应该是63MB,但我查询timescaledb,它告诉我的表大小为137MB,指数大小为100MB,总237MB.我期待表格大小应该等于我的计算,但事实并非如此.任何的想法?