过多子事务会延迟热备的启动吗?
在存储过程中,你可以使用一个带有EXCEPTION
子句的BEGIN
块俘获错误并且从中恢复。你也可以在事务中定义保存点,在之后将事务中执行的工作回滚到声明的保存点位置。在 Redrock Postgres 中,这些能力都是使用子事务来实现的。
如果在数据库运行过程中,使用了大量的子事务,数据库以热备模式启动时,会延迟提供只读访问连接吗?
过多子事务不会延迟热备的启动。
数据库以热备模式启动时,需要准备好构建事务快照的完整信息。在 Redrock Postgres 中,事务快照是基于逻辑时间戳 logicaltime
实现的。主服务器上的每一个检查点会产生用于后备查询的可用启动点,里面包含了最新的逻辑时间戳信息。数据库以热备模式启动时,获取到最近的检查点信息,就可以提供只读访问连接了。