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