相关疑难解决方法(0)

在PostgreSQL中计算和节省空间

我有一个像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太字节.我可以使用什么技巧来压缩这个表?我的可能想法如下......

将 …

postgresql storage database-design bigdata

58
推荐指数
4
解决办法
2万
查看次数

可以为空的列占用PostgreSQL中的额外空间吗?

我有一个包含7列的表,其中5列将为null.我将有一个空列int,text,date,boolean,和money数据类型.该表将包含数百万行,其中包含许多空值.我担心空值会占用空间.

另外,你知道Postgres索引空值吗?我想阻止它索引空值.

postgresql indexing null database-design

26
推荐指数
2
解决办法
5439
查看次数

在PostgreSQL中不使用NULL仍然在标题中使用NULL位图?

显然,PostgreSQL在每个数据库行标题中存储了几个值.

如果我不在该表中使用NULL值 - 是否仍然存在空位图?
定义列有NOT NULL没有区别?

postgresql null storage database-design

13
推荐指数
1
解决办法
3827
查看次数

在PostgreSQL中将varchar更改为boolean

我已经开始研究一个项目,那里有一个相当大的表(大约82,000,000行),我觉得它非常臃肿.其中一个字段定义为:

consistency character varying NOT NULL DEFAULT 'Y'::character varying
Run Code Online (Sandbox Code Playgroud)

它用作布尔值,值应始终为('Y'|'N').

注意:没有检查约束等.

我试图找出理由改变这个领域的理由.这是我有的:

  • 它被用作布尔值,所以就这样吧.显式优于隐式.
  • 它将防止编码错误,因为现在任何可以转换为文本的内容都会在那里盲目进行.

这是我的问题.

  • 尺寸/存储怎么样?db是UTF-8.所以,我认为在这方面确实没有多少节省.对于a boolean,它应该是1个字节,而对于'Y'UTF-8中的a 应该是1个字节(至少这是我在Python中检查长度时得到的).这里是否还有其他存储空间可以保存?
  • 查询性能?Postgres会因" =TRUE"与" ='Y'"的原因而获得任何性能提升吗?

postgresql storage database-design query-optimization postgresql-9.1

12
推荐指数
1
解决办法
9193
查看次数