GRID_NODE_SKIP 环境选项

当查询指定的网格或区域内的网格服务器不可用时,使用 SET ENVIRONMENT 语句的 GRID_NODE_SKIP 选项来定义数据库服务器的行为。

GRID_NODE_SKIP 会话环境选项可设置为三个值中的任一个:
DEFAULT
此设置指定缺省的行为。当网格查询尝试从那个节点的数据库检索符合条件的行时,如果指定的网格或区域内的网格服务器不可用,则返回错误到发出该网格查询的服务器,且该查询失败。
OFF
如果未设置 GRID_NODE_SKIP,则这是缺省的设置。它与显式的 DEFAULT 设置有同样的作用,如上所述。
ON
当网格查询尝试从那个节点检索符合条件的行时,如果指定的网格或区域内的网格服务器不可用,则返回错误到发出该网格查询的服务器。那个服务器通过尝试连接该网格或区域中的下一服务器来继续处理该查询,除非其结果被跳过了的服务器是参与的网格服务器之中的最后一个。在那种情况下,组合来自可用的节点的结果,且通过发出该网格查询的服务器来计算来自可用的网格服务器的结果的逻辑 UNION 或 UNION。
对于当前的会话,当 SET ENVIRONMENT GRID_NODE_SKIP ON 语句生效时,当多个网格节点不可用时,网格查询可返回结果。通过执行 ifx_gridquery_skipped_nodes() 函数可返回跳过的网格服务器的标识。可调用另一函数 ifx_gridquery_skipped_node_count() 来检测跳过了多少个网格或区域的节点。要获取更多关于这些函数的信息,请参阅 GBase 8s Enterprise Replication 指南

由于网格查询是动态的 UNION 或 UNION ALL 组合的查询,因此在语句准备的开始时作出跳过网格服务器的决定,而不是在执行语句时决定。这是因为如果不可从远程数据字典获取信息,则不可准备 SELECT 语句。因此,在语句执行之前,发出网格查询的数据库服务器作出跳过还是不跳过不可用的网格服务器的决定,如果 GRID_NODE_SKIP 会话环境选项设置为 ON 的话。