1. ERROR: canceling statement due to conflict with recovery User query might have needed to see row versions that must be removed.
2. 参考方案:
备库上需要开启的参数: max_standby_streaming_delay = 10s hot_standby_feedback = on # 主要是这个参数设置为on即可
参考: PG从库查询被终止的解决办法 (icode9.com) https://www.icode9.com/content-4-514325.html
3. 最佳实践
1.改大 比如:max_standby_streaming_delay = 30min; 后果是wal空间变大,需监控磁盘空间; 2.不建议 改hot_standby_feedback=on; 这个读库有问题会蔓延至写库; 3. 最好是能把对应的sql语句调优至比较短时间内执行完毕;
4. 原因分析
这个是在读库上查询数据较久,而对应的数据在写库已出现变化,从而出现读写数据冲突了
(视图一般是联合多个基表查询,如未加筛选条件会更慢)