我有一个Postgres 9.0数据库,我经常收集它的数据转储。
这个数据库有很多索引,每次我恢复转储postgres启动后台任务吸尘器(是吗?)。该任务消耗大量处理时间和内存来重新创建已还原转储的索引。
我的问题是:
提前致谢, 安德烈
答案 0 :(得分:7)
如果你使用pg_dump两次,一次使用--schema-only,一次使用--data-only,你可以将模式输出分为两部分:第一部分是裸表定义,最后一部分是约束和索引。 pg_restore可能会做类似的事情。
答案 1 :(得分:3)
最佳实践可能是
如果存在索引,则批量加载将使PostgreSQL写入数据库和索引。批量加载会使您的表统计无用。但是,如果您先加载数据,然后创建索引,则统计信息会自动更新。
我们存储创建索引和脚本的脚本,这些脚本在版本控制下在不同文件中创建表。这就是原因。
在您的情况下,changing autovacuum settings可能会对您有所帮助。您可能还会考虑为某些表或所有表禁用autovacuum,但这可能有点极端。