在热备用复制主机中运行SELECT
查询(有点大的查询~1GB 的数据输出,执行时间约为 15 分钟)时,它会停止 wal 归档过程。一旦查询完成执行,复制就会发生并开始复制。这是 postgres 的正常行为还是需要调整系统运行时配置?
我试过改成work_mem=64MB
,work_mem=96MB
还是没能解决延迟问题。
(使用 PG 9.5)
在热备用复制主机中运行SELECT
查询(有点大的查询~1GB 的数据输出,执行时间约为 15 分钟)时,它会停止 wal 归档过程。一旦查询完成执行,复制就会发生并开始复制。这是 postgres 的正常行为还是需要调整系统运行时配置?
我试过改成work_mem=64MB
,work_mem=96MB
还是没能解决延迟问题。
(使用 PG 9.5)
如果备用数据库上的查询需要主数据库已删除的数据,则复制可能会延迟。在备用查询完成之前,无法重放带有资源删除的主服务器的 WAL,或者必须取消备用查询。
你可以:
让standby在一个时间限制后取消查询——见
max_standby_archive_delay
和max_standby_stremaing_delay
参数;或者在备用数据库上启用
hot_standby_feedback
,这样主数据库不会在其查询运行时删除备用数据库所需的资源。这并不完美,延迟复制或导致查询取消的冲突在备用数据库刚刚启动时仍然会发生。但它有帮助。