postgresql表分区中的表看起来像什么?我如何调查?

postgresql表分区中的表看起来像什么?我如何调查?,postgresql,partitioning,Postgresql,Partitioning,我正试图调查一个数据库膨胀的问题,我在一个表分区中发现了一些我不理解的东西,也找不到调查的方法。我很抱歉,如果我错过了显而易见的,我的知识和经验与数据库是稀疏的 Postgresql 9.0 我有一个跟踪DHCP分配历史信息的数据库,它有四个表:日志、租约、池和消息 每个表按天划分为分区,因此我们可以在30天后删除分区。其中一些分区每天添加的行数超过400万行 查看大多数分区可以得到我所期望的: dhcplog=> \d+ leases

我正试图调查一个数据库膨胀的问题,我在一个表分区中发现了一些我不理解的东西,也找不到调查的方法。我很抱歉,如果我错过了显而易见的,我的知识和经验与数据库是稀疏的

Postgresql 9.0

我有一个跟踪DHCP分配历史信息的数据库,它有四个表:日志、租约、池和消息

每个表按天划分为分区,因此我们可以在30天后删除分区。其中一些分区每天添加的行数超过400万行

查看大多数分区可以得到我所期望的:

dhcplog=> \d+ leases
                                                Table "public.leases"
   Column   |           Type           |                      Modifiers                      | Storage | Description 
------------+--------------------------+-----------------------------------------------------+---------+-------------
 id         | bigint                   | not null default nextval('leases_id_seq'::regclass) | plain   | 
 ip         | inet                     |                                                     | main    | 
 mac        | macaddr                  |                                                     | plain   | 
 start      | timestamp with time zone |                                                     | plain   | 
 stop       | timestamp with time zone |                                                     | plain   | 
 switchport | integer                  |                                                     | plain   | 
Foreign-key constraints:
    "leases_switchport_fkey" FOREIGN KEY (switchport) REFERENCES switchports(id)
Child tables: partitions.leases_2014_08_02,
              partitions.leases_2014_08_03,
              partitions.leases_2014_08_04,
              partitions.leases_2014_08_05,
              partitions.leases_2014_08_06, ...
但在其中一个表中,我有两个类似于引用的表,作为分区(消息和日志)列表的一部分:

但是,我无法从这些分区获取行数或任何信息:

dhcplog=> SELECT count(*) FROM partitions.messages;
ERROR:  relation "partitions.messages" does not exist
LINE 1: SELECT count(*) FROM partitions.messages;
                             ^
但伯爵对其他所有人都起作用

有什么建议吗


谢谢-sjs

如果仔细查看\d+log的输出,您应该注意到子表消息是作为消息列出的,而不是作为分区列出的。消息。因此,查询表partitions.messages将不起作用

以下方面应起作用:

SELECT count(*) FROM messages;

表名为
public.messages
。只需使用public.messages中的
选择count(*)
其他表(
log_xxx
)位于模式
分区中。感谢您注意到这一点。为什么它会出现在表日志的列表中?它是它自己的带有分区的表。我会犹豫是否将整个表计算为一天有830万条记录。@SeanSchluntz:“为什么它会出现在表日志的列表中”-因为有人这样创建它:
create table messages(..)inherits(log)谢谢你的帮助。
SELECT count(*) FROM messages;