【发布时间】:2012-08-07 18:25:06
【问题描述】:
我有一个中等大小的表(大约 150 亿行),它由大约 200 个子表组成(即每个子表都继承母表,并且有约束 CHECKS 来优化分区)。
加载每个表的plpgsql代码也会在每个子表上产生索引,但不幸的是(因为它是一个函数),它也不能为它刚刚加载和索引的子表执行vacuum analyze subtable; .
所以,直到整个 DB 的下一个 vacuum analyze 完成,母表上的所有查询都很糟糕并且不使用索引(正如解释所揭示的那样)。
请注意,这一切都适用于 PostgreSQL 8.2.14。
问题
- 有没有办法让 plpgsql 函数说,请在上面加糖,结束事务块并执行
vacuum analyze subtable? - 有没有一种方法可以使用通配符 (
vacuum analyze schema.subtables*) 同时清理/分析多个表? - 或者,是否可以仅对一个架构进行真空/分析?
- 是否有任何其他方法可以从 postgresql 中以编程方式对 200 个子表进行清理/分析(是的,我可以将所有子表的名称、折腾和季节转储到 psql 脚本中以使用一些 perl ,然后执行它,但它有点难看)。
【问题讨论】:
标签: plpgsql postgresql-8.4 vacuum