为什么postgres数据库服务器在使用--no-owner选项进行转储/恢复后会减慢速度



当我进行转储/还原时,一切都很好。但当我添加选项--no-owner并转储/恢复数据库时,查询速度会减慢
例如,在转储/恢复之前,一个复杂的查询运行大约3分钟而不是1秒

唯一更改的是pg_dump实用程序的--no-owner

我想当使用--no-owner选项转储并恢复这样的数据库时,恢复数据库的用户就无法访问索引信息。但这只是假设

详细信息
make docker-dbdump && make docker-dbrestore降低查询执行速度:

.ONESHELL:
docker-dbdump:
file=${APP_ROOT}/db/${DB_NAME}-$$(date "+%Y-%m-%d_%H-%M-%S").sql.gz
docker exec ${DOCKER_CONTAINER} pg_dump --no-owner -U postgres ${DB_NAME} 
| gzip -f > $${file}
cp $${file} ${APP_ROOT}/db/${DB_NAME}.sql.gz
docker-dbrestore: dbclear
zcat ${APP_ROOT}/db/${DB_NAME}.sql.gz | 
docker exec -i ${DOCKER_CONTAINER} psql -U ${DB_USER} -d ${DB_NAME}

当我删除--no-owner选项时,一切都很好。

UPD

ERROR:  permission denied to create extension "btree_gist"
HINT:  Must be superuser to create this extension.
ERROR:  extension "btree_gist" does not exist
...
ERROR:  data type integer has no default operator class for access method "gist"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.

我想比较一下使用和不使用--no-owner选项转储数据库的方式,并在今天晚些时候显示

由于错误而减速:

HINT:  Must be superuser to create this extension.
ERROR:  extension "btree_gist" does not exist

没有创建扩展,因此也没有创建相关索引。

没有索引,数据库速度减慢=(

当我用权限修复错误时,一切也开始超级快地工作!

最新更新