AUS 的工作方式

Auto Update Statistics (AUS) 维护系统使用调度程序传感器、任务、阈值和表的组合来评估和更新统计信息。

调度程序任务、传感器、阈值和表驻留在 sysadmin 数据库中。缺省情况下,只有用户 gbasedbt 有权访问 sysadmin 数据库。

以下事件顺序描述了如何自动更新统计信息:

  1. 调度程序的 mon_table_profile 传感器每天运行,以从 sysmaster 数据库中的 systables 表读取数据。 传感器使用有关每张表的已更改内容的信息更新 sysadmin 数据库中的 mon_table_profile 表。
  2. “Auto Update Statistics 评估”任务每天从 mon_table_profile 表和 sysmaster 数据库中的 systablesysdistribsyscolumnssysindices 表收集信息。
  3. “Auto Update Statistics 评估”任务可根据到期策略确定哪些表需要更新。
  4. “Auto Update Statistics 评估”任务生成 UPDATE STATISTICS 语句,并将它们插入 sysadmin 数据库中的 aus_command 表。
  5. “Auto Update Statistics 刷新”任务在每周六和周日的早上 1 点到 5 点之间从 aus_command 表运行 UPDATE STATISTICS 语句,并将结果插回 aus_command 表。在早上 5 点前未完成的任何 UPDATE STATISTICS 语句都将保留在 aus_command 表中。

下表描述了 sysadmin 数据库中组成 AUS 维护系统的任务、传感器、阈值、表和视图。

表 1. AUS 组件
组件 类型 描述
mon_table_profile 传感器 编译表概要文件信息,包括每张表上发生的更新、插入和删除总数。

它在 ph_task 表中定义。

mon_table_profile 存储其传感器收集的表概要文件信息。其他许多调度程序任务都使用此表的信息。
Auto Update Statistics 评估 任务 根据到期策略标识具有旧文件统计信息的表,并为这些表生成 UPDATE STATISTICS 语句。

它在 ph_task 表中定义。

aus_command 存储已安排运行的优先的 UPDATE STATISTICS 语句,以及运行这些语句后的结果的列表。

aus_cmd_state 列指示每个 UPDATE STATISTICS 语句的状态:

  • P = 暂挂
  • I = 进行中
  • E = 错误
  • C = 无错完成

如果命令状态为 E,那么关联的 SQL 错误代码将列于 aus_cmd_err_sql 列中,而关联的 ISAM 错误代码将列于 aus_cmd_err_isam 列中。

Auto Update Statistics 刷新 任务 在每周六和周日的早上 1 点到 5 点之间运行准备的 UPDATE STATISTICS 语句。

它在 ph_task 表中定义。

到期策略 阈值 定义何时更新统计信息的条件。

它在 ph_threshold 表中定义。

aus_cmd_comp 视图 显示 aus_command 表的有关已成功运行的 UPDATE STATISTICS 语句的信息。
aus_cmd_list 视图 显示 aus_command 表中有关已安排要运行的 UPDATE STATISTICS 语句的信息。
有关调度程序的其他功能部件的信息,请参阅《GBase 8s 管理员指南》中的描述。有关 sysadmin 数据库的信息,请参阅《GBase 8s 管理员参考》。