如何删除PostgreSQL中最旧的分区?

时间:2013-12-04 03:00:55

标签: postgresql partitioning

我可以用

列出分区
SELECT
child.relname        AS child_schema
FROM pg_inherits
JOIN pg_class child         ON pg_inherits.inhrelid   = child.oid ;

是否保证它们按创建顺序列出?因为那时只需要额外的LIMIT 1。否则,这将打印最旧的,名称中编号最小的那个:(我的分区名为name_1 name_2 name_3 ...)

SELECT
MIN ( trim(leading 'name_' from child.relname)::int )        AS child_schema
FROM pg_inherits
JOIN pg_class child         ON pg_inherits.inhrelid   = child.oid ;

然后我需要创建一个使用结果执行DROP TABLE的脚本?有没有更简单的方法?

1 个答案:

答案 0 :(得分:0)

  

是否保证它们按创建顺序列出?

没有。这可能只是顺序扫描而没有删除表,但如果更改查询和计划更改,则可能会按顺序获得意外结果。我也希望一旦重用空闲空间,排序也可能会改变。

您当前的修剪查询是最好的方法。坚持下去。