当我进行转储/还原时,一切都很好。但当我添加选项--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
没有创建扩展,因此也没有创建相关索引。
没有索引,数据库速度减慢=(
当我用权限修复错误时,一切也开始超级快地工作!