技术开发 频道

改进大型数据库的管理:分区表的访问计划

【IT168 技术文档】分区表的访问计划

    本实验将研究如何在访问计划中描述分区表:

1.您将更新分区表中的统计信息。
2.您将使用 db2expln 命令并分析结果。
3.您将在执行查看的操作中使用 DB2 命令和 SQL 。 

    对 LINEITEM 表执行 RUNSTATS 操作:

清单 56. Runstats

db2 runstats on table db2inst1.lineitem 


    说明以下 SQL 语句并检查说明输出:

清单 57. 说明

db2 “select l_shipdate,sum(l_quantity) from LINEITEM group by l_shipdate” 

    要进行说明的 SQL 位于 EX4-2.sql 文件,可以使用下面的命令运行该文件:

清单 58. 说明输出

db2expln –d SAMPLE –t –f EX4-2.sql




图 30. 说明输出 

    注意:该 SQL 执行了 LINEITEM 表的索引扫描。说明输出中有一个关于表分区的要点需要注意,所访问的表是被分区的,并且在扫描过程中所有数据分区都将被访问。 

    说明下面的 SQL 语句并检查说明输出:

清单 59. 说明

db2 “select l_shipdate, l_partkey, l_returnflag

from LINEITEM

where l_shipdate between '01/01/1993' and '31/08/1993'

and l_partkey = 49981” 

    要进行说明的 SQL 语句位于 EX4-3.sql 文件中,可使用下面的命令运行该文件:

清单 60. 说明输出

db2expln –d SAMPLE –t –f EX4-3.sql



图 31. 说明输出 

    注意:这个 SQL 语句执行了 LINEITEM 表的索引扫描。在本例中,可以看到优化器能够执行数据分区排除操作。在说明输出中要注意的是关于表分区,访问的表是被分区的,将执行分区排除功能以及删除活动数据分区的值。 

    在本例中,活动的数据分区为 1-2。这里引用的是 syscat.datapartitions 中的序列号(seqno)而不是 describe data partitions 命令中的 PartitionId。 

    使用下面的 SQL 确定在前面说明示例中活动的分区的名称: 

    清单 61. 说明

db2 “select seqno,datapartitionname
from syscat.datapartitions
where tabname = ‘LINEITEM’ order by seqno”




图 32. 分区名称 

    注意:序列号 1 和 2 分别映射的是 JAN1993 和 JULY1993 分区名称。

0
相关文章