From 7712dd2a73130036985dea27e34b12eef71e203b Mon Sep 17 00:00:00 2001 From: Ajax Huang Date: Fri, 22 Sep 2023 06:56:58 +0000 Subject: [PATCH] =?UTF-8?q?update=20content/zh/docs/AboutopenGauss/?= =?UTF-8?q?=E6=9E=81=E8=87=B4RTO.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\346\236\201\350\207\264RTO.md" | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git "a/content/zh/docs/AboutopenGauss/\346\236\201\350\207\264RTO.md" "b/content/zh/docs/AboutopenGauss/\346\236\201\350\207\264RTO.md" index b508e29bd..8b1524974 100644 --- "a/content/zh/docs/AboutopenGauss/\346\236\201\350\207\264RTO.md" +++ "b/content/zh/docs/AboutopenGauss/\346\236\201\350\207\264RTO.md" @@ -17,7 +17,27 @@ ## 特性描述 -极致RTO开关开启后,xlog日志回放建立多级流水线,提高并发度,提升日志回放速度。 +采用page多版本的方式支持备机读,回放线程维护每一个page的日志链,读线程根据指定的LSN(wal日志的位置)读取对应版本的page。当查询和回放冲突时,查询超时会被取消,报错信息是"canceling statement due to conflict with recovery"。当出现这种类型的报错时,业务端可根据错误码进行重试。 +造成查询和回放冲突的日志类型主要包含如下几种: +1. 删除文件 +触发条件:删除文件、reindex、truncate表等操作。 +处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。 +2. truncate +触发条件: delete大量记录之后,做vacuum回收,文件末尾的无用数据页truncate。 +处理方案: 立即 cancel 所有冲突的查询。 +3. drop database +触发条件:执行删除数据库操作。 +处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。 +4. drop tablespace: +触发条件:删除tablespace +处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。 +5. vacuum清理(仅在参数enable_exrto_standby_read_opt开启下,会产生冲突)。 +触发条件:vacuum操作。 +处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。 +6. reindex database: +触发条件:vacuum操作。 +处理方案:等待max_standby_streaming_delay时间后,发送cancel消息取消冲突的查询。 +打开备机读之后,因为需要维护历史page版本,所以会占用更多IO。 ## 特性增强 @@ -25,7 +45,19 @@ ## 特性约束 -极致RTO只关注同步备机的RTO是否满足需求。极致RTO去掉了自带的流控,统一使用recovery\_time\_target参数来做流控控制。本特性不支持备机读。如果查询备机可能导致备机core。 +极致RTO只关注同步备机的RTO是否满足需求。极致RTO去掉了自带的流控,统一使用recovery\_time\_target参数来做流控控制。 +本特性支持备机读,由于增加了对数据页面历史版本的读取,备机上的查询性能会低于主机上的查询性能,低于并行回放备机读的查询性能,但是查询阻塞回放的情况有所缓解。 +不支持段页式表,备机读不支持列存表。 +当节点的IO和CPU使用过高时(建议不超过70%),备机读性能会有明显下降。 +极致RTO备机读在以下6种情况下会取消查询。 + 1.当查询时间超出了参数standby_max_query_time。 + 2.触发了备机读文件的强制回收。 + 3.查询和truncate类型的日志回放有冲突。 + 4.当查询和回放有锁相关等冲突时,和并行回放备机读相同,取消查询由参数max_standby_streaming_delay控制。 + 5.在开启参数enable_exrto_standby_read_opt的情况下,回放vacuum相关的清理日志时会发生冲突,和并行回放备机读相同,取消查询由参数max_standby_streaming_delay控制。 + 6.查询和relmap类型的日志回放有冲突。 + + ## 依赖关系 -- Gitee