我有一个由大约 200 个子表组成的中型表(大约 150 亿行)(即每个子表继承母表,并且有约束 CHECKS 来优化分区)。
加载每个表的 plpgsql 代码也会在每个子表上生成索引,但不幸的是(因为它是一个函数),它也不能vacuum analyze subtable;
为它刚刚加载和索引的子表执行 a。
因此,vacuum analyze
在整个数据库的下一个完成之前,母表上的所有查询都很糟糕并且不使用索引(正如解释所揭示的那样)。
请注意,这是 PostgreSQL 8.2.14 的全部内容。
问题
- 有没有办法让 plpgsql 函数说,请在上面加糖,结束事务块并执行
vacuum analyze subtable
? - 有没有办法使用一些通配符()一次清理/分析许多表
vacuum analyze schema.subtables*
? - 或者,是否可以只真空/分析一个模式?
- 有没有其他方法可以从 postgresql 中以编程方式清理/分析 200 个子表(是的,我可以将所有子表的名称、折腾和季节转储到 psql 脚本中,然后执行那个,但它有点难看)。