gpt4 book ai didi

postgresql - 我需要在 PostgreSQL 中手动 VACUUM 临时表吗?

转载 作者:行者123 更新时间:2023-11-29 14:15:50 27 4
gpt4 key购买 nike

假设我有一个应用服务器:

  • 使用连接池(允许空闲连接的数量相对较多),
  • 可以运行数月,并且
  • 大量使用临时表(在 COMMIT 时未DROP)。

以上意味着我可能有 N 个“永久”数据库 session “持有”N 个临时表,只有在服务器重新启动时才会删除这些表。N p>

我很清楚 autovacuum 守护进程无法访问那些临时表。

我的问题是,如果我经常对临时表执行 INSERTDELETE 操作,那么这些表应该会“存活”很长时间,那么我是否需要在删除后手动 VACUUM 那些表,或者一个手动 ANALYZE 就足够了?

目前,如果我执行

select
n_tup_del,
n_live_tup,
n_dead_tup,
n_mod_since_analyze,
vacuum_count,
analyze_count
from
pg_stat_user_tables
where
relname = '...'
order by
n_dead_tup desc;

我看到 vacuum_count 始终为零:

n_tup_del   n_live_tup  n_dead_tup  n_mod_since_analyze vacuum_count    analyze_count
64 3 64 0 0 16
50 1 50 26 0 3
28 1 28 2 0 5
7 1 7 4 0 4
3 1 3 2 0 4
1 6 1 8 0 2
0 0 0 0 0 0

这可能意味着确实需要手动 VACUUM

最佳答案

https://www.postgresql.org/docs/current/static/sql-commands.html

ANALYZE — collect statistics about a database

VACUUM — garbage-collect and optionally analyze a database

真空也可以选择分析。因此,如果您只需要 - 最新统计数据 - 只需分析。如果你想“恢复”未使用的行,那么 vacuum。如果两者都需要,请使用 vacuum analyze

关于postgresql - 我需要在 PostgreSQL 中手动 VACUUM 临时表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48342301/

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