监控 DB2 活动之Visual Explain详细介绍(2)
Visual Explain 组件
您可能已经注意到,Access Plan 窗口中提供的输出(参见图 9)由层次化图形构成,表示处理为指定查询选定的访问计划时所必需的不同组件。计划中的各组件都显示为一种称为节点 的图形对象。可存在两种类型的节点:
操作符(Operator)。操作符节点用于确定是否必须在数据上执行一项活动,或者通过表或索引生成的输出。
操作对象(Operand)。操作对象节点用于确定对其进行操作的实体(例如,表可以是一个表扫描操作符的操作对象)。
操作对象
典型情况下,操作对象节点用于确定表、索引和表队列(表队列用于使用了内部分区并行操作的情况下),它们在层次图中的符号分别是矩形(表)、菱形(索引)和平行四边形(表队列)。图 11 给出了表和索引操作对象的示例。
图 11. 表和索引操作对象
操作符
另一方面,操作符节点用于确定从插入操作到索引或表扫描的一切活动。操作符节点在层次图中的符号为椭圆形,表示数据的访问方法、表的连接方法,以及其他一些因素,例如是否要执行排序操作等。表 6 列出了访问计划层次图中较为常见的操作符。
表 6. 常见 Visual Explain 操作符
操作符 | 所执行的操作 |
---|---|
CMPEXP | 计算表达式。(仅用于调试模式。) |
DELETE | 从表中删除行。 |
EISCAN | 扫描用户定义的索引,产生一系列简化的行。 |
FETCH | 使用指定的记录标识符从表中获取列。 |
FILTER | 通过应用一个或多个谓词过滤数据。 |
GENROW | 生成一个行表。 |
GRPBY | 按指定列或函数的公共值组织行,并对集合函数求值。 |
HSJOIN | 显示一个散列连接,其中一个或多个表在连接列上是混编的。 |
INSERT | 向表中插入行。 |
IXAND | 对两个或多个索引扫描所得到的行标识符(RID)进行 AND 运算。 |
IXSCAN | 使用可选的启动/停止条件扫描表索引,产生有序的行流。 |
MSJOIN | 显示合并连接,其中外部和内部表必须按连接谓词的顺序排列。 |
NLJOIN | 显示嵌套循环连接,为外部表中的各行访问内部表一次。 |
PIPE | 翻译行。(仅用于调试模式。) |
RETURN | 将查询返回的数据显示给用户。 |
RIDSCN | 扫描一个行标识符(RID)列表,该列表是从一个或多个索引中获得的。 |
RPD | 远程计划的操作符。与 V8 中的 SHIP 操作符极为类似(之前版本中的 RQUERY 操作符),惟一的不同在于它不包含 SQL 或 XQuery 语句。 |
SHIP | 从远程数据库源中检索数据。在联合系统中使用。 |
SORT | 按特定类的顺序排序行,可以选择消除重复条目。 |
TBSCAN | 通过直接从数据页中读取所有数据而检索行。 |
TEMP | 将数据存储在临时表中以便读回(很可能要读回多次)。 |
TQUEUE | 在数据库代理之间传输表数据。 |
UNION | 串联来自多个表的行流。 |
UNIQUE | 消除特定列值重复的行。 |
UPDATE | 更新表中的行。 |
XISCAN | 扫描 XML 表的索引。 |
XSCAN | 在一个 XML 文档节点子树中导航。 |
XANDOR | 允许为多个 XML 索引应用 ANDed 和 ORed 谓词。 |
图 12 中展示了一些更为常见的操作对象的示例。在这个示例中,执行了三种不同的行动:两个表执行了表扫描,两个数据集使用散列连接算法连接。
图 12. 一些常见操作符
连接符和 RETRUN 操作符
箭头说明数据从一个节点流向另一个节点的方式,它将层次图中的所有节点连接在一起,RETURN 操作符通常用于终止这一过程。RETURN 操作符表示最终结果集产生,并包含关于查询的汇总信息以及所完成的 SQL 语句返回的内容。使用 RETURN 显示的 timeron 值表示按 timeron 度量的时间总长度,是完成查询所必需的时间。图 13 展示了 RETURN 操作符的一个示例。
图 13. RETURN 操作符