db2表分区建立与卸载

自己用过的一个例子,有用采纳,没用勿喷。

采用数据库分区最主要的原因之一:

将一个大的数据库分成多个小的数据库可以提高查询的性能,因为每个数据库分区拥有自己的一小部分数据。假设您想扫描1亿条记录,对一个单一分区的数据库来讲,该扫描操作需要数据库管理器独立扫描一亿条记录,如果您将数据库系统做成50个分区,并将这1亿条记录平均分配到这50个分区上,那么每个数据库分区的数据库管理器将只扫描200万记录

1、建立带分区的表(以月份分区为例)

db2表分区建立与卸载

2.--查看表分区
SELECT * FROM SYSCAT.datapartitions WHERE TABNAME='table_name'

3.给一个表添加分区,

alter table rpt_sdsx_xdhs add partition rpt_sdsx_xdhs_part26 STARTINT'201901' INCLUSIVE ENDING '201902' INCLUSIVE

4.卸载分区:

前段时间建立分区后,后来不想用了,于是就是用oracle的逻辑把分区删掉,

alter table rpt_sdsx_xdhs drop partition rpt_sdsx_xdhs_part26 ;

结果就报错了,一查才知道,原来db2和oracle的删除分区是不一样的,db2要分为2个阶段来执行

         4.1.先分离分区。如果把分区表比喻为一列火车,那么第一步就是先把其中一节车厢给分离出来到另一个火车上。但是请注意,只是分离分区,分区中的数据都还是在的。

alter table rpt_sdsx_xdhs detach partition rpt_sdsx_xdhs_part26  into rpt_sdsx_xdhs_tmp;--这里rpt_sdsx_xdhs_tmp为新建的临时表

如果rpt_sdsx_xdhs_part26  这个分区中有记录,那么这些记录就被放置到了rpt_sdsx_xdhs_tmp这个表里了。

           4.2.其次删除分区转移表。这一步可以选择做或者不做,当第一步执行完了以后,分区rpt_sdsx_xdhs_part26  就相当于和rpt_sdsx_xdhs没有关系了。

drop table rpt_sdsx_xdhs_tmp;