gpt4 book ai didi

postgresql - 大表的 Autovacuum 花费的时间太长

转载 作者:行者123 更新时间:2023-11-29 11:59:00 25 4
gpt4 key购买 nike

我将我的 9.4 postgresql 集群升级到了 9.6。 (通过 pg_upgrade,所以我的数据库统计数据没有移动到新集群)我有一张大 table (大约 450M 条记录)。这个表在我的代码中用得很多(很多选择和较少的更新)。当我启动我的 postgres 服务时,Postgres 会自动启动 autovacuum,它会锁定我的表。所以我什么也做不了:既不截断表也不手动分析它。我试图在我的配置文件中设置 autovacuum=off,但它没有帮助(为什么?!我当然重新启动了服务器)

更新:我的目标是尽快开始使用该表。 Truncate 会有所帮助(因为表将为空),ANALYZE 应该会有所帮助(Postgres 将开始使用适当的索引)

最快的方法是:1)截断表或者2)分析表?任何帮助将不胜感激。

更新:这是监视锁的查询的输出:

SELECT psa.pid,granted,query FROM pg_locks pl LEFT JOIN pg_stat_activity psa ON pl.pid = psa.pid where locktype='relation';


pid | granted | query
-------+---------+---------------------------

11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
11831 | t | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)

当我从我的 psql 控制台分析表并查看来自 pg_stat_activity 的数据时:

query                  |         backend_start         |          xact_start           |          query_start          |         state_change          | state  | wait_event_type | wait_event
analyze ig_tasks_users;| 2017-01-19 10:03:30.287791+01 | 2017-01-19 10:07:11.683817+01 | 2017-01-19 10:07:11.683817+01 | 2017-01-19 10:07:11.683822+01 | active | Lock | relation

如果我正确理解,我的 VACUUM ANALYZE 会锁定表,而我的手动 ANALYZE 任务会被锁定。 (是吗?)

最佳答案

在一个 session 中运行 truncate 并让它继续工作,然后打开新连接并使用 pg_terminate_backend(pid) 终止所有其他 session 。谨记

  • truncate 将从表中删除所有数据
  • autovacuum 最好打开

关于postgresql - 大表的 Autovacuum 花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com