备机事务内透明写转发
可获得性
本特性自openGauss 5.1.0版本开始引入,仅适用于资源池化架构。
特性简介
本特性是在传统主备架构下的备机事务写转发特性基础上,在资源池化架构下进行的特性增强。传统架构下的备机写转发特性是只要在备机上有开启事务操作,会将整个事务全部转发给主机。通过该特性,在资源池化架构下的备机上,如果开启了写转发,且备机上有开启事务的操作,会将事务中的读请求放到备机本地执行,写请求转发到主节点执行。
客户价值
在资源池化架构下,集群对外体现是支持多节点同时写入的功能效果。当主备节点并发操作的数据冲突较少时,提升集群整体性能的线性比。
特性描述
本特性依赖备机支持写特性。在资源池化架构下,当开启备机支持写特性后,备机上执行的显式事务(即begin,end包围的sql),数据库会自动将事务中的涉及修改的写SQL语句转发给主机, 而事务中的读语句仍然在备机本地执行。
特性增强
本特性是在传统主备架构下的备机事务写转发特性基础上,在资源池化架构下进行的特性增强。
特性约束
- 在资源池化架构下,当开启备机支持写特性后,备机启动事务后会将事务中的涉及修改的写SQL语句转发给主机, 事务中的读语句仍然在备机本地执行。
- 在资源池化架构下,当开启备机支持写特性后,备机不支持事务内包含有DDL语句和LOCK语句,遇到这种情况会报错。
- 在资源池化架构下,当开启备机支持写特性后,如果事务内包含子事务,那么事务内的读也会转发到主。
- 在资源池化架构下,当开启备机支持写特性后,如果是游标类操作,会统一全部转发给主,包括游标。
- 在资源池化架构下,当开启备机支持写特性后,COPY类型的语句不会转发到主机执行,即COPY TO类型的命令可以在备机上执行成功,COPY FROM类型的命令会正常报错。
- 在资源池化架构下,当开启备机支持写特性后,不会因为备机支持了写转发而改变外围工具的执行行为,比如gs_dump/gs_dumpall/gs_probackup/pg_recvlogical之类的命令,依然会按照原有的逻辑报错支持或者不支持。
- 在资源池化架构下,当开启备机支持写特性后,备机不支持不在显式事务块内的存储过程/函数/自治事务/Package的调用。如果需要调用存储过程/函数/自治事务/Package,需要在显式的事务块中,且以call xxx的方式去使用。例如:
openGauss=# begin; BEGIN openGauss=# call pck1.p1(); INFO: rowcount: 1 INFO: (2,200,var2,clob2,1234ABD2,text2) INFO: rowcount: 2 p1 ---- 1 (row) openGauss=# end; COMMIT
依赖关系
本特性依赖备机写转发的特性。
意见反馈