AUTO_STAT_MODE 环境选项

使用 AUTO_STAT_MODE 环境选项来启用或禁用在当前的模式期间 UPDATE STATISTICS 操作的自动模式。 在自动模式中,用户可定义最小的数据更改阈值作为表的属性。数据库服务器刷新该表上的统计、它的索引,仅当从上一次计算分发统计以来数据更改已超出阈值,才刷新表和索引分片上的统计。

查询优化器使用分布统计来标识 DML 操作的有效执行计划。然而,由于对大型表的计算统计是资源密集的操作,因此与更有效的系统资源的分配相比,对他们在系统目录中的当前值没有显著差异而重新计算分布,会降低数据库服务器的性能。

当启用自动的 UPDATE STATISTICS 模式时,UPDATE STATISTICS 语句仅有选择地刷新其标识为陈旧的或丢失的表、列和索引数据分发统计。当创建或修改表时,用户可指定最小的更改阈值作为表属性。此属性的值覆盖 STATCHANGE 配置参数的显式的设置或缺省的设置。SET ENVIRONMENT STATCHANGE 语句类似地覆盖当前会话的 STATCHANGE 配置参数设置。如果未显式地设置 STATCHANGE 阈值,则当启用自动的 UPDATE STATISTICS 模式时,系统缺省的阈值(自从上次计算统计以来,至少 10% 的行更改了)定义陈旧的数据分发。

当禁用自动模式时,当 UPDATE STATISTICS 语句重新计算分发统计信息时,数据库服务器不考虑任何用户定义的或缺省的陈旧统计的阈值。在非自动模式下(或当您在 UPDATE STATISTICS 语句中包括 FORCE 关键字时),数据库服务器对所有指定的表和索引删除并重新计算统计信息,不引用任何先前计算的数据分发。

SET ENVIRONMENT AUTO_STAT_MODE 语句指定的值可启用或禁用陈旧的统计的自动标识和重新计算:

UPDATE STATISTICS 的自动模式要求所有的表的分片来维护在同一解析度的列的分发。这暗指以不同于在系统目录中创建当前列分发所使用的解析度的持续的 UPDATE STATISTICS 操作,会强制刷新所有分片的所有列分发。如果不指定解析度,则使用随同分发存储的解析读,而不是缺省的解析度 2.5。

自动模式仅影响永久表。AUTO_STAT_MODE 设置对临时表无影响。

AUTO_STAT_MODE 和 STATCHANGE 配置参数

AUTO_STAT_MODE 配置参数可为数据库服务器的所有会话的 UPDATE STATISTICS 操作的自动模式指定 10 全局的值。 然而,您可使用 SQL 的 SET ENVIRONMENT AUTO_STAT_MODE 语句来覆盖当前会话的 AUTO_STAT_MODE 配置参数设置。

STATCHANGE 配置参数可指定一负整数作为更改阈值的全局的百分率来定义陈旧的数据分发。当通过 AUTO_STAT_MODE 配置参数来启用 UPDATE STATISTICS 的自动模式时,对于任何其 STATCHANGE 表属性指定为 AUTO 或缺省为 AUTO 的表,此设置作为缺省的更改阈值生效。

要获取更多关于 AUTO_STAT_MODE 和 STATCHANGE 配置参数的信息,请参阅您的 GBase 8s 管理员参考

要获取更多 STATCHANGE 表属性的信息,请参阅主题 ALTER TABLE 语句的 Statistics 选项CREATE TABLE 语句的 Statistics 选项UPDATE STATISTICS 语句的性能因素

SET ENVIRONMENT AUTO_STAT_MODE 的示例

下列语句启用当前会话的自动模式:
SET ENVIRONMENT AUTO_STAT_MODE 'ON';
如果它是 'OFF',则这会覆盖 AUTO_STAT_MODE 配置参数的设置,对于当前会话的剩余部分,或直到您重置 AUTO_STAT_MODE 会话环境变量为止。
如果您对非自动模式下分发统计上的 UPDATE STATISTICS 操作的行为感到满意,则可禁用自动模式,如此例中所示:
SET ENVIRONMENT AUTO_STAT_MODE 'OFF';