详解 如SQL执行计划概述节中所说,EXPLAIN会显示执行计划,但并不会实际执行SQL语句。EXPLAIN ANALYZE和EXPLAIN PERFORMANCE两者都会实际执行SQL语句并返回执行信息。在这一节将详细解释执行计划及执行信息。 执行计划 以如下SQL语句为例: 1
分区剪枝 分区剪枝是GaussDB提供的一种分区表查询的优化技术,数据库SQL引擎会根据查询条件,只扫描特定的部分分区。该优化动作自动触发,当分区表的查询条件契合剪枝场景时,分区剪枝便会自行启动。 依据剪枝所处阶段的差异,分区剪枝可划分为静态剪枝与动态剪枝两类: 静态剪枝发生于优化器阶段
PG_STAT_SYS_TABLES PG_STAT_SYS_TABLES视图显示pg_catalog、information_schema模式的所有命名空间中系统表的统计信息。具体字段信息如表1所示。 表1 PG_STAT_SYS_TABLES字段 名称 类型 描述 relid
STAT_USER_TABLES 显示当前节点所有Schema中用户自定义普通表的状态信息,如表1所示。 表1 STAT_USER_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表所在的Schema名。 relname name
SUMMARY_STAT_USER_TABLES 显示集群内所有Schema中用户自定义普通表的状态信息的汇总求和结果(在CN节点使用。对每个DN节点中用户自定义普通表的状态信息进行汇总求和,其中timestamp类型字段不进行求和,仅取所有节点该字段的最新值),如表1所示。 表1
GLOBAL_STAT_USER_TABLES 显示各节点所有Schema中用户自定义普通表的状态信息(在CN节点使用。显示DN节点用户自定义普通表的状态信息,不进行汇总),如表1所示。 表1 GLOBAL_STAT_USER_TABLES字段 名称 类型 描述 node_name
STAT_SYS_TABLES 显示当前节点内pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息,如表1所示。 表1 STAT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname
SUMMARY_STAT_SYS_TABLES 显示集群内pg_catalog、information_schema以及pg_toast模式下所有系统表的状态统计信息(在CN节点使用,统计信息包含CN节点与DN节点的数据。对每个节点下系统表的状态信息汇总求和,其中timestamp
GLOBAL_STAT_SYS_TABLES 显示集群各个节点pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息(包含CN与DN节点的状态信息,在CN节点使用,不汇总),如表1所示。 表1 GLOBAL_STAT_SYS_TABLES
GLOBAL_STAT_ALL_TABLES 显示各节点中每个表(包括TOAST表)的状态信息(在CN节点使用,每个表在每个节点下的状态信息不汇总),如表1所示。 表1 GLOBAL_STAT_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid
STAT_USER_TABLES 显示当前节点所有Schema中用户自定义普通表的状态信息,如表1所示。 表1 STAT_USER_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表所在的Schema名。 relname name
STAT_SYS_TABLES 显示当前节点内pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息,如表1所示。 表1 STAT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname
SUMMARY_STAT_SYS_TABLES 显示数据库各节点pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息的汇总求和结果(对每个节点下系统表的状态信息汇总求和,其中timestamp类型字段不进行求和,仅取所有节点该字段的最新值
GLOBAL_STAT_SYS_TABLES 显示数据库各节点pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息(不同节点数据不汇总求和),如表1所示。 表1 GLOBAL_STAT_SYS_TABLES字段 名称 类型 描述
SUMMARY_STAT_ALL_TABLES 显示数据库各节点中每个表(包括TOAST表)的状态信息的汇总求和结果(其中timestamp类型字段不进行求和,仅取所有节点该字段的最新值),如表1所示。 表1 SUMMARY_STAT_ALL_TABLES字段 名称 类型 描述 schemaname
GLOBAL_STAT_ALL_TABLES 显示数据库各节点中每个表(包括TOAST表)的状态信息(不同节点数据不汇总求和),如表1所示。 表1 GLOBAL_STAT_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的
PG_STAT_ALL_TABLES PG_STAT_ALL_TABLES视图可用来查询当前数据库中每个表的信息(包括TOAST表),显示特定表的统计信息。 表1 PG_STAT_ALL_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name
GS_STAT_ALL_PARTITIONS GS_STAT_ALL_PARTITIONS视图包含当前数据库中所有分区表每个分区的信息,每个分区各占一行,显示该分区访问情况的统计信息,此视图信息通过gs_stat_get_all_partitions_stats()函数查询。 表1
SUMMARY_STAT_SYS_TABLES 显示数据库各节点pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息的汇总求和结果(对每个节点下系统表的状态信息汇总求和,其中timestamp类型字段不进行求和,仅取所有节点该字段的最新值
执行计划 以如下SQL语句为例: 1 2 3 4 5 gaussdb=# DROP TABLE IF EXISTS t1; gaussdb=# DROP TABLE IF EXISTS t2; gaussdb=# CREATE TABLE t1 (c1 int, c2 int);