CLUSTER_TXN_SCOPE 配置参数

设置 CLUSTER_TXN_SCOPE 配置参数来配置高可用性集群,以便在客户端会话发出提交时,服务器在辅助服务器上或跨集群地阻塞会话直到事务在那个会话中应用。

onconfig.std 值
CLUSTER_TXN_SCOPE SERVER
  • SESSION = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务提交的影响返回到那个会话。控制返回到会话之后,同一个数据库服务器的其他会话或集群中其他数据库服务器上的其他会话可能觉察不到事务提交和事务的影响。
  • SERVER (缺省行为) = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务应用在客户端发出提交的那个数据库服务器。那个数据库服务器的其他会话觉察到事务提交和事务的影响。集群中的其他数据库服务器会话可能觉察不到事务的提交及其影响。对于高可用性集群服务器,这是缺省行为。
  • CLUSTER = 当客户端会话发出提交时,数据库服务器阻塞会话,直到事务应用在高可用性集群中所有数据库服务器,除了使用 DELAY_APPLY 或 STOP_APPLY 的 RS 辅助服务器之外,这些会话觉察到事务提交和事务的影响。

生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
您运行带有 -wf CLUSTER_TXN_SCOPE=value-wm CLUSTER_TXN_SCOPE=value 参数的 SQL 管理 API task()admin() 函数之后。

用法

设置 CLUSTER_TXN_SCOPE 配置参数来控制从高可用性集群返回事务提交到客户端应用程序。集群事务协调可延迟事务提交到客户端应用程序的返回,直到事务应用到辅助服务器或高可用性集群中的所有辅助服务器。 这个例程防止由于异步日志处理导致的操作失败,并确保多步骤处理中的那些步骤按串行顺序发生。

集群事务协调不应用到 RS 辅助服务器,该服务器有 DELAY_APPLY 或 STOP_APPLY 配置函数值而不是 0。在客户端应用程序可收到提交之前,事务不需要应用在 RS 辅助服务器上。

CLUSTER_TXN_SCOPE 影响只读辅助服务器和可更新辅助服务器上的会话。

示例1:在高可用性集群服务器间的事务协调

在这个示例中,客户端应用程序启动一个两步骤进程。客户端应用程序在主数据库服务器上插入数据,然后在 HDR 辅助服务器上启动数据处理。

在来自主服务器的日志应用在 HDR 辅助服务器上之前,如果试图在 HDR 服务器上对插入的数据执行 SELECT,则操作失败。 为了防止此失败,设置主服务器的 CLUSTER_TXN_SCOPE 配置参数为 CLUSTER,以便客户端应用程序不收到提交,且不可启动数据处理,直到数据插入页应用在 HDR 辅助服务器上。

示例2:数据库服务器上的事务协调

在此示例中,您让一个客户端应用程序分作几个处理步骤。每个处理步骤使用一个不同的 SQL 会话来连接到数据库服务器。应用程序更新数据,然后应用程序的另一部分在不同的 SQL 会话中处理被更新的数据。

如果 CLUSTER_TXN_SCOPE 设置为 SESSION,则处理被更新的数据的那部分应用程序觉察不到更新的结果,可发生失败。为了防止此失败,设置数据库服务器的 CLUSTER_TXN_SCOPE 配置参数为 SERVER,以便客户端应用程序不接收提交,且不启动数据处理,直到在数据库服务器上更新完成。