使用 FORCE 和 AUTO 关键字

您可可选地使用 FORCE 关键字或 AUTO 关键字来控制 UPDATE STATISTICS 语句的模式,当它更新系统目录中表和列的当前分发统计信息时。这些关键字仅影响表和分片统计信息,在对例程统计信息的操作中是无效的。

如果您既省略 FORCE 关键字又省略 AUTO 关键字,则由 AUTO_STAT_MODE 配置参数的显式设置或缺省设置确定 UPDATE STATISTICS 对表和分片分发统计信息的影响,除非设置 AUTO_STAT_MODE 会话环境变量来覆盖当前会话的那个配置参数。

指定这些关键字之一仅影响当前的 UPDATE STATISTICS 操作。如果您尝试在同一 UPDATE STATISTICS 语句中同时包括 FORCE 和 AUTO 关键字,则数据库服务器发出异常。

重要: 数据库服务器收集的统计信息可能需要用于存储的 sbspace。通过运行 onspaces -c -S 命令创建 sbspace,并将配置参数 SYSSBSPACENAME 设置为该 sbspace 名称。如果未设置 SYSSBSPACENAME 配置参数,则数据库服务器可能不能够存储指定的统计信息,因而 UPDATE STATISTICS 语句失败并报错 -9814, "Invalid default sbspace name"。

FORCE 关键字

FORCE 关键字刷新指定范围内所有表和列的统计信息。如果启用 UPDATE STATISTICS 语句的自动模式,则 FORCE 关键字覆盖自动模式,从而忽略 FOR TABLE 规范的范围内的表和分片的 STATCHANGE 属性的值,就好像当前 UPDATE STATISTICS FORCE 操作的 AUTO_STAT_MODE 设置是 OFF 一样。

下列语句指定 FORCE 关键字:

UPDATE STATISTICS FORCE;
此语句指导数据库服务器采取下列活动:
  • 重新计算数据库中每个表的分发统计信息
  • 重新优化每个用户定义的例程
  • 将结果存储在系统目录中

包括 FORCE 关键字模仿 GBase 8s 数据库服务器 11.70 之前版本的先前的 UPDATE STATISTICS 行为。

AUTO 关键字

AUTO 关键字导致数据库服务器在自动模式下运行 UPDATE STATISTICS 语句,但仅对于其统计信息丢失或陈旧的表和分片。不为其 STATCHANGE 值低于指定阈值的表或分片刷新分发统计信息。

下列语句指定 AUTO 关键字:

UPDATE STATISTICS AUTO;
此语句指导数据库服务器采取下列行动:
  • 重新为数据库中的每个表重新计算丢失的或陈旧的数据分发统计信息
  • 重新优化每个用户定义的例程
  • 将结果存储在系统目录中

对于某些表和表分片,当查询优化器已得到足够精确的现有的统计信息时,此选项避免不必要的重新计算。在那种情况下,与对应的 UPDATE STATISTICS FORCE 操作相比,UPDATE STATISTICS AUTO 操作需要更少的时间,又不损害查询性能。