慕桂英3389331
2019-06-25 14:41:56
PostgreSQL中的空間計算與節(jié)省我有一張這樣的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));上面的加起來相當于每一行50個字節(jié)。我的經(jīng)驗是,我需要另外40%到50%的系統(tǒng)開銷,甚至沒有任何用戶創(chuàng)建的索引以上。所以,每一行大約有75個字節(jié)。我將在表中有很多行,可能超過1450億行,所以這個表將推進13-14兆字節(jié)。如果有的話,我能用什么技巧來擠這張桌子呢?我下面可能的想法.。轉(zhuǎn)換real值到integer..如果它們可以存儲為smallint,即每個字段節(jié)省2個字節(jié)。轉(zhuǎn)換列b。M變成一個數(shù)組。我不需要搜索這些列,但我確實需要能夠一次返回一個列的值。所以,如果我需要列g,我可以這樣做SELECT a, arr[5] FROM t;我會用數(shù)組選項節(jié)省空間嗎?會有超速罰則嗎?還有其他想法嗎?
3 回答

狐的傳說
TA貢獻1804條經(jīng)驗 獲得超3個贊

慕桂英4014372
TA貢獻1871條經(jīng)驗 獲得超13個贊
CREATE TABLE WITH column_reorder_ok
WITH column_tetris_ok
. :)
添加回答
舉報
0/150
提交
取消