zoukankan      html  css  js  c++  java
  • postgresql 主从 ERROR: canceling statement due to conflict with recovery User query might have needed to see row versions that must be removed.

    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. 原因分析

    这个是在读库上查询数据较久,而对应的数据在写库已出现变化,从而出现读写数据冲突了

    (视图一般是联合多个基表查询,如未加筛选条件会更慢)

    用一个例子来演示会更加清晰
  • 相关阅读:
    牛客练习赛24 E:青蛙(最短路)
    菜根谭#10
    菜根谭#9
    菜根谭#8
    菜根谭#7
    菜根谭#6
    菜根谭#5
    菜根谭#4
    菜根谭#3
    菜根谭#2
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/15686509.html
Copyright © 2011-2022 走看看