1

我有一个由大约 200 个子表组成的中型表(大约 150 亿行)(即每个子表继承母表,并且有约束 CHECKS 来优化分区)。

加载每个表的 plpgsql 代码也会在每个子表上生成索引,但不幸的是(因为它是一个函数),它也不能vacuum analyze subtable;为它刚刚加载和索引的子表执行 a。

因此,vacuum analyze在整个数据库的下一个完成之前,母表上的所有查询都很糟糕并且不使用索引(正如解释所揭示的那样)。

请注意,这是 PostgreSQL 8.2.14 的全部内容。

问题

  1. 有没有办法让 plpgsql 函数说,请在上面加糖,结束事务块并执行vacuum analyze subtable
  2. 有没有办法使用一些通配符()一次清理/分析许多表vacuum analyze schema.subtables*
  3. 或者,是否可以只真空/分析一个模式?
  4. 有没有其他方法可以从 postgresql 中以编程方式清理/分析 200 个子表(是的,我可以将所有子表的名称、折腾和季节转储到 psql 脚本中,然后执行那个,但它有点难看)。
4

1 回答 1

1

请注意,这是 PostgreSQL 8.2.14 的全部内容。

经过五年的运行,8.2 去年停止了支持,并且 8.2.14 缺少许多在 2009-03-16 之后发现的安全漏洞和错误的修复。您迫切需要从这十年开始使用一个版本。

有没有其他方法可以从 postgresql 中以编程方式清理/分析 200 个子表(是的,我可以将所有子表的名称、折腾和季节转储到 psql 脚本中,然后执行那个,但它有点难看)。

您可以在其中创建条目pg_autovacuum并将其留给 autovacuum 守护进程。当然,该守护进程近年来已经变得更好,所以这是更新的另一个原因。

于 2012-08-07T20:20:37.070 回答