当我开始时,我使用了默认的纯格式pg_dump.我很无知.

Research revealed to me time and file size improvements with pg_dump -Fc | gzip -9 -c > dumpfile.gz. I was enlightened.

当需要重新创建数据库时,

# create tablespace dbname location '/SAN/dbname';
# create database dbname tablespace dbname;
# alter database dbname set temp_tablespaces = dbname;

% gunzip dumpfile.gz              # to evaluate restore time without a piped uncompression
% pg_restore -d dbname dumpfile   # into a new, empty database defined above

我感到很不高兴:恢复过程花了12个小时创建了一个数据库,而这个数据库只是它将成为的数据库的一小部分:

# select pg_size_pretty(pg_database_size('dbname'));
47 GB

因为有人预测这个数据库将有几TB的容量,所以我现在需要考虑提高性能.

请你开导我.

推荐答案

首先判断您的磁盘设置是否具有合理的IO性能.然后判断PostgreSQL安装是否进行了适当的调整.尤其是shared_buffers应该正确设置,maintenance_work_mem应该在恢复期间增加,full_page_writes应该在恢复期间关闭,wal_buffers应该在恢复期间增加到16MB,checkpoint_segments应该在恢复期间增加到16左右,您不应该有任何不合理的登录(比如记录执行的每个语句),auto_vacuum应在恢复期间禁用.

如果您使用的是8.4,还可以try 并行恢复,pg_恢复的--jobs选项.

Postgresql相关问答推荐

如何使用postgr sql regex删除重复项和inc表记录

在Haskell中定义新类型与持久化类型的惯用方法

PostgreSQL:重新创建主键值以匹配记录计数

在 Postgresql 中实现自定义运算符时出错

Postgres数据库系统已准备好接受连接和docker compose

postgres vacuum 是否改进了我的查询计划

Docker compose read connection reset by peer error on pipeline

PostgreSQL:在timestamp::DATE 上创建索引

是否有 postgres CLOSEST 运算符?

遇到序列化失败的条件是什么?

PostgreSQL 提示:You will need to rewrite or cast the expression. column "state" is of type status but expression is of type character varying

Docker Compose + Spring Boot + Postgres 连接

Postgres 在 WHERE id != int 查询中排除 NULL

datagrip 无法应用更改 此表是只读的

为 Django Postgres 连接强制 SSL

django.db.utils.IntegrityError:duplicate key value violates unique constraint "django_content_type_pkey"

如何将参数值添加到 pgadmin sql 查询?

使用 PostgreSQL 创建数据透视表

防止 CHARACTER VARYING 字段中出现空字符串

大型查询后 psycopg2 泄漏内存