相关疑难解决方法(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万
查看次数

了解Postgres行大小

我得到了一个大的(> 100M行)Postgres表,其结构为{integer,integer,integer,timestamp without time zone}.我期望一行的大小为3*整数+ 1*时间戳= 3*4 + 1*8 = 20字节.

实际上,行大小pg_relation_size(tbl) / count(*)= 52字节.为什么?

(不对表进行删除:pg_relation_size(tbl, 'fsm')〜= 0)

postgresql storage database-design types

23
推荐指数
2
解决办法
1万
查看次数

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

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

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

postgresql null storage database-design

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

在Postgres中存储小型固定长度数组的最佳数据模型(使用SqlAlchemy)

我想存储一组每小时设定点.24个浮点数(0到1),用于将当天的小时数映射到强度值.

我可以:

  1. 有24列命名_0_23.(如何在Sqlalchemy中扩展db.Model以使用数字作为列名?)
  2. 有一个值表(id, value, hour_of_the_day).
  3. 使用postgres数组类型.(但似乎我不能拥有固定长度数组,我需要一些应用程序逻辑来获取/设置值.)

这些值将主要一起查询并缩放(以便范围0到1映射)自定义范围.

哪种型号更可取?

postgresql database-design sqlalchemy data-modeling python-3.x

3
推荐指数
1
解决办法
691
查看次数