标签: vacuum

删除大量行后是否需要重新索引和清空表?

我正在运行一个 PostgreSQL 数据库,它有几个存储日志信息的表。此信息仅用于报告目的,如果超过 30 天,则会转储到文件中并从数据库中删除。

可能有数百万行被删除,每次删除后我们都在运行一个 REINDEX。

这是否足够,或者我们还应该运行 VACUUM 或 VACUUM ANALYZE 吗?还是不需要 REINDEX 而我们应该运行 VACUUM 或 VACUUM ANALYZE?

我们正在使用 PostgreSQL 8.2.3,我认为它不允许自动清空。

postgresql database-performance vacuum

11
推荐指数
1
解决办法
1万
查看次数

我怎么知道 postgres 8.3 中的 autovacuumer 是否真的在工作?

我有几个 postgres 8.3 数据库,它们显示出缺乏清理的症状。

我已经检查了配置,它们处于打开 autovacummer 的默认状态。另外,当我启动数据库时,我在我的 postgres 日志中看到“autovacuum 启动器已启动”。

问题是,我从来没有真正看到真空运行。我也从未在日志中看到有关真空发生的任何内容(我应该看到任何内容吗?)

那么如何判断吸尘器是否工作呢?例如,有没有办法查看上次真空完成的时间?更好的是,是否有一些文档可以指点我来回答这个问题?

谢谢!

postgresql vacuum

5
推荐指数
1
解决办法
4836
查看次数

postgresql 轨道计数和 autovacuum 不起作用

在启动日志条目中表明 autovacuum 不工作。我查询 pg_stat_user_tables 表并且 last_vacuum 和 last_autovacuum 列是空的,尽管我之前运行过真空查询。将 pgadmin 连接到数据库表明真空不工作。

我在两个 Ubuntu Azure VM 上使用 postgresql。一个VM设置为主,第二个是通过流式传输的复制数据库。在https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-on-postgresql-on-an-ubuntu-12-04-vps 中大致描述。

除了 autovacuum 之外,一切似乎都很有效。在启动过程中记录以下错误:

LOG:  test message did not get through on socket for statistics collector
LOG:  disabling statistics collector for lack of working socket
WARNING:  autovacuum not started because of misconfiguration
HINT:  Enable the "track_counts" option.
LOG:  database system was shut down at 2017-01-19 14:07:13 UTC
DEBUG:  checkpoint record is at 38/F6000028
Run Code Online (Sandbox Code Playgroud)

在 postgresql.config 我使用以下设置:

track_counts = on  
autovacuum = …
Run Code Online (Sandbox Code Playgroud)

postgresql ubuntu vacuum azure

5
推荐指数
1
解决办法
1599
查看次数

DB Full Vacuum、Cluster、Analyze - 以什么顺序?

我有一个巨大的(~150 GB)postgresql 数据库,它的性能在过去几周内下降了。为了提高性能,我打算执行FULL VACUUMCLUSTERANALYZE

我应该按什么顺序执行这些操作?我不介意执行所需的时间,只介意数据库的性能改进。

谢谢,

乌迪

postgresql cluster database vacuum

4
推荐指数
1
解决办法
1489
查看次数

postgres 真空

好的,我已经搬到一家新公司,我看到他们在这里有一个 PostgreSQL 数据库来运行 OpenNMS。

我是一个 MySQL 人,对 PostgreSQL 一点也不熟悉,但我至少学会了如何运行psqlpostgres -D进入单用户模式。

无论如何,OpenNMS 崩溃了。我进入并追踪到 PostgreSQL,给出了这个错误:

WARNING:  database "template1" must be vacuumed within 965550 transactions
HINT:  To avoid a database shutdown, execute a full-database VACUUM in "template1".
Run Code Online (Sandbox Code Playgroud)

它实际上从 100 万开始,而我已经下降到 965500,如您所见。我已经通过登录单用户 ( postgres -D) 并完全运行 Vacuum来达到这一点。现在我希望这可以清理它,但结果正好是 55 行:

WARNING:  database "template1" must be vacuumed within 938861 transactions
HINT:  To avid a database shutdown, execute a full-database VACUUM in "template1".
WARNING:  database "template1" must be vacuumed within 938860 transactions …
Run Code Online (Sandbox Code Playgroud)

postgresql opennms vacuum

2
推荐指数
1
解决办法
5038
查看次数

journalctl 真空不工作

我最近开始使用 Fedora 25,我正在尝试手动清除日志,但它不起作用。例如:

$ journalctl --disk-usage
Archived and active journals take up 24.0M on disk.
Run Code Online (Sandbox Code Playgroud)

我尝试清除:

$ journalctl --vacuum-size=1M
Vacuuming done, freed 0B of archived journals on disk.
Run Code Online (Sandbox Code Playgroud)

它没有释放任何东西。有任何想法吗?系统是全新安装的,我还没有接触过journald.conf。谢谢。

fedora vacuum journal systemd

2
推荐指数
1
解决办法
1461
查看次数