我有一个中等大小的表(大约150亿行),由大约200个子表组成(即每个子表INHERITS母表,并且有约束CHECKS来优化分区)。
加载每个表的plpgsql代码也会在每个子表上生成索引,但不幸的是(因为它是一个函数),它也不能为刚刚加载的子表执行vacuum analyze subtable;
并编入索引。
因此,在整个数据库的下一个vacuum analyze
完成之前,母表上的所有查询都会吮吸并且不使用索引(如解释所示)。
请注意,这完全适用于PostgreSQL 8.2.14。
问题
vacuum analyze subtable
?vacuum analyze schema.subtables*
)一次真空/分析多个表?答案 0 :(得分:1)
在经历了五年的运行后,8.2去年失去了支持,而且8.2.14在2009-03-16之后发现了许多修复安全漏洞和漏洞。你迫切需要进入这个十年的版本。请注意,这完全适用于PostgreSQL 8.2.14。
有没有其他方法来真空/分析a中的200个子表 postgresql中的程序化时尚(是的,我可以转储名称 所有子表,折腾和季节尝试与一些perl到psql 脚本,并执行它,但它有点难看。
您可以在pg_autovacuum
中创建条目并将其保留给autovacuum守护程序。当然,近年来该守护进程已经获得了更好的批次,所以这是更新的另一个原因。