gpt4 book ai didi

sql - 在 Postgres 中,截断或删除行后,在 pg_dump 优化 pg_restore 之前执行重新索引吗?

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

下面的 REINDEX 语句是否有助于还原操作或转储的文件大小?

在 SO 或网络上的任何地方都找不到关于此的问题。我正在使用 Postgres 9.4 并在各种表上使用 truncatedelete 语句清理一个非常大的数据库。

表格数据的类型和大小各不相同。

在这个清理操作之后,我立即执行 pg_dump、tar 和上传,然后是 pg_restore。它使用的目录格式具有 12 个并行作业用于转储,8 个用于恢复。

例如,这些查询首先:

TRUNCATE users;
DELETE FROM users_email WHERE active = 1;

REINDEX TABLE users;
REINDEX TABLE users_email;

然后:

$ pg_dump_9.4 --compress=0 -F directory -j 12 $DB_EXPORT_NAME -f $DB_DUMP_FOLDER 2>> operations.log

$ # do tar and upload with dump then:

$ pg_restore_9.4 -d $DB_IMPORT_NAME -j 8 $DB_DUMP_FOLDER 2>> operations.log

最佳答案

这对 pg_dumppg_restore 没有任何影响。

pg_dump 根本不使用索引,它只是将其定义作为 CREATE INDEX 语句写入转储。表本身是按顺序扫描的。

pg_restore 使用转储中的 CREATE INDEX 创建索引。

关于sql - 在 Postgres 中,截断或删除行后,在 pg_dump 优化 pg_restore 之前执行重新索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975524/

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