特性描述

71 阅读1分钟

特性描述

极致RTO开关开启后,xlog日志回放建立多级流水线,提高并发度,提升日志回放速度。 采用page多版本的方式支持备机读,回放线程维护每一个page的日志链,读线程根据指定的LSN(wal日志的位置)读取对应版本的page。当查询和回放冲突时,查询超时会被取消,报错信息是"canceling statement due to conflict with recovery"。当出现这种类型的报错时,业务端可根据错误码进行重试。 造成查询和回放冲突的日志类型主要包含如下几种:

  • 删除文件

    • 触发条件:删除文件、reindex、truncate表等操作。
    • 处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。
  • truncate

    • 触发条件: delete大量记录之后,做vacuum回收,文件末尾的无用数据页truncate。
    • 处理方案: 立即 cancel 所有冲突的查询。
  • drop database

    • 触发条件:执行删除数据库操作。
    • 处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。
  • drop tablespace:

    • 触发条件:删除tablespace
    • 处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。
  • vacuum清理(仅在参数exrto_standby_read_optt开启下,会产生冲突)。

    • 触发条件:vacuum操作。
    • 处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。