我想列出 PostgreSQL 9.1 中由动态触发器创建的所有分区。
我能够使用Frank Heikens 的这个相关答案生成分区计数。
我有一个表foo有一个INSERT触发器创建foo_1,foo_2等动态。插入的分区是根据主键 id 选择的,这是一种基于范围的分区。
是否可以显示 table 的当前所有分区foo?
我在 Postgres 数据库中有 4 亿行,表有 18 列:
id serial NOT NULL,
a integer,
b integer,
c integer,
d smallint,
e timestamp without time zone,
f smallint,
g timestamp without time zone,
h integer,
i timestamp without time zone,
j integer,
k character varying(32),
l integer,
m smallint,
n smallint,
o character varying(36),
p character varying(100),
q character varying(100)
Run Code Online (Sandbox Code Playgroud)
列e、k和n都是 NULL,它们根本不存储任何值,此时完全没用。它们是原始设计的一部分,但从未被移除。
编辑 - 大多数其他列都是非 NULL。
问题:
如何计算这对存储的影响?它是否等于列的大小 * 行数?
删除这些空列会显着提高该表的性能吗?页面缓存能够容纳更多行吗?
postgresql performance database-design storage disk-space postgresql-performance