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

Postgresql 为什么postgres数据库服务器在使用--no owner选项进行转储/恢复后速度变慢?,postgresql,postgresql-10,pg-dump,Postgresql,Postgresql 10,Pg Dump,当我进行转储/恢复时,一切正常。但当我添加选项--无所有者和转储/恢复数据库时,查询速度会减慢。 例如,一个复杂的查询在转储/恢复之前大约运行3分钟而不是1秒 唯一更改的是——没有pg_dump实用程序的所有者 我假设当使用--无所有者选项转储并恢复这样的数据库时,恢复数据库的用户将无法访问索引信息。但这只是假设 详细信息 make docker dbdump&&make docker dbrestore减慢查询执行速度: .ONESHELL: docker数据库转储: file=${APP\u

当我进行转储/恢复时,一切正常。但当我添加选项
--无所有者
和转储/恢复数据库时,查询速度会减慢。
例如,一个复杂的查询在转储/恢复之前大约运行3分钟而不是1秒

唯一更改的是
——没有
pg_dump
实用程序的所有者

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

详细信息
make docker dbdump&&make docker dbrestore
减慢查询执行速度:

.ONESHELL:
docker数据库转储:
file=${APP\u ROOT}/db/${db\u NAME}-$$(日期“+%Y-%m-%d\uh-%m-%S”).sql.gz
docker exec${docker\U CONTAINER}pg\U dump--无所有者-U postgres${DB\U 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}
当我删除
--无所有者
选项时,一切都很好

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.

我想比较一下数据库是如何转储的,并且没有
--无所有者
选项,今天晚些时候显示

由于错误而变慢:

HINT:  Must be superuser to create this extension.
ERROR:  extension "btree_gist" does not exist
未创建扩展,因此也未创建相关索引

如果没有索引,数据库速度会变慢=(


当我用权限修复错误时,所有功能也开始以极快的速度工作!

由于错误而减慢速度:

HINT:  Must be superuser to create this extension.
ERROR:  extension "btree_gist" does not exist
未创建扩展,因此也未创建相关索引

如果没有索引,数据库速度会变慢=(


当我修复了带有权限的错误时,所有功能也开始超快速工作!

这似乎不太可能。请在还原过程中检查错误消息。添加
EXPLAIN(分析,缓冲区)
对于快速和慢速执行同一查询的问题。@LaurenzAlbe:updated如果无法安装
btree\u gist
,则以后的索引创建失败。这可能就是问题所在。@LaurenzAlbe:你是对的。
btree\u gist
无法创建数据库所有者。只有超级用户。我还有两个:
错误:必须是角色“postgres”的成员。
。如何找出哪些函数未创建?读取所有错误消息。这似乎不太可能。在还原过程中检查错误消息。添加
解释(分析、缓冲区)
对于快速和慢速执行同一查询的问题。@LaurenzAlbe:updated如果无法安装
btree\u gist
,则以后的索引创建失败。这可能就是问题所在。@LaurenzAlbe:你是对的。
btree\u gist
无法创建数据库所有者。只有超级用户。我还有两个:
错误:必须是角色“postgres”的成员。
。如何找出未创建的函数?阅读所有错误消息。