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

SQL Server Bitwise的行为类似于C#Enum Flags

我在C#中的枚举上使用了Flags,一切都很好但是在以下场景中想要在SQL中使用类似的东西:

我们想要返回属于列表或条件的用户列表,如下所示:

ConditionOne = 2
ConditionTwo = 4
ConditionThree = 8
Run Code Online (Sandbox Code Playgroud)

等等...

我们将为用户提供一些针对他们的条件,如下所示:

User1: 6 (conditions 1 and 2)
User2: 4 (condition 2)
User3: 14 (conditions 1, 2 and 3)
Run Code Online (Sandbox Code Playgroud)

等等...

我们希望能够进行查询,我们说所有用户都获得条件1,在这种情况下,即使他们还有其他条件,它也会返回用户1和3.

非常感谢任何见解,只在C#中使用Flags,而不是直接在Sql Server中使用.

sql sql-server bitwise-operators

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

了解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中的按位操作

我有以下表格:

types | id | name
------+----+----------
         1 | A
         2 | B
         4 | C
         8 | D
         16| E
         32| F
Run Code Online (Sandbox Code Playgroud)

vendors | id | name     | type
--------+----+----------+-----
           1 | Alex     | 2     //type B only
           2 | Bob      | 5     //A,C
           3 | Cheryl   | 32    //F
           4 | David    | 43    //F,D,A,B
           5 | Ed       | 15    //A,B,C,D
           6 | Felix    | 8     //D
           7 | Gopal    | 4     //C
           8 | Herry    | …
Run Code Online (Sandbox Code Playgroud)

postgresql indexing performance bit-manipulation

6
推荐指数
1
解决办法
4315
查看次数