美文网首页
db2表分区

db2表分区

作者: Vic_is_new_Here | 来源:发表于2019-04-14 15:51 被阅读0次

1. 表分区作用

     表分区可扩展表的存储能力、对于大量数据表使用分区字段可提高查询效率。

2. 创建表分区

   create table IXP.ESBTLOG(

     UUID VARCHAR(32),

     UUID_POS VARCHAR(20),

     MSG_ID VARCHAR(100),

     ESB_CODE VARCHAR(20) ,

     CLI_ID CHAR(3),

     CLI_ID_BOCS CHAR(2),

     SERV_ID CHAR(3),

     SERV_TRAN_CODE VARCHAR(20),

     SERV_TCODE VARCHAR(20),

     ESB_RET_CODE VARCHAR(20),

     ERR_MSG VARCHAR(200),

     TRACE_NO VARCHAR(32),

     TRAN_DATE CHAR(8),

     TRAN_TIME CHAR(6),

     TXN_STATUS CHAR(1),

     JOURNAL_NO VARCHAR(32),

     EXT_UUID VARCHAR(32),

     TXN_TOKEN VARCHAR(32),

     NODE_NAME VARCHAR(32),

     TRAN_BEGIN_TIME TIMESTAMP,

     TRAN_END_TIME TIMESTAMP,   

     SP1_BEGIN_TIME TIMESTAMP, 

     SP1_END_TIME TIMESTAMP,

     USER_BOCS VARCHAR(20),  

     WKSTATION VARCHAR(20),   

     RET_TRAN_DATE VARCHAR(20),  

     RET_TRAN_TIME VARCHAR(20),   

     RET_AC_DATE VARCHAR(20),   

     RET_TRACE_NO VARCHAR(20),   

     AP_TRACE_NO VARCHAR(20),   

     BR_NO VARCHAR(20),

     TM_SMP TIMESTAMP default current timestamp

  )PARTITION BY RANGE(TM_SMP)

  (

   PARTITION PARTMAX starting '9999-12-31-00.00.00.000000' INCLUSIVE ending MAXVALUE EXCLUSIVE

  )in USERSPACE1

注意:倒数三行是创建分区表的关键,此例中此TM_SMP为分区字段,第一个分区名为PARTMAX,从'9999-12-31-00.00.00.000000'到无穷大都是它的分区范围。我们还可以在EXCLUSIVE后面继  续定义其它的分区,定义规则与定义PARTMAX分区相同,当然定义每个分区需以逗号分隔。最后一行in USERSPACE1表示分区表创建在USERSPACE1表空间中。我们还能添加,删除表分区。

3. 添加分区

 db2 "alter table ESBTLOG add partition part20181118 STARTING '2018-11-18-00.00.00.000000' INCLUSIVE ENDING '2018-11-19-00.00.00.000000' EXCLUSIVE"

4. 删除分区

    其思路是:detach分区到一张临时表(该操作会创建临时表,临时表已存在会报错,detach是分离分区的意思),再将临时表删除。

    db2 "alter table ixp.esbtlog detach partition PART20181118 into table tb_temp"

    db2 "drop table tb_temp"

5. 查询表分区

    A. 查询该表共有多少分区

        db2 "select substr(TABNAME ,1,11) t_name,substr(DATAPARTITIONNAME ,1,12) part_name,DATAPARTITIONID ,substr(LOWVALUE,1,28) low_value,substr(HIGHVALUE,1,28) high_value from syscat.datapartitions where tabname='ESBTLOG' order by datapartitionid"

    B. 显示每个分区有多少数据(没有数据的不会显示) 

        db2 "select substr(tm_smp,1,10) as tran_day,count(*) from esbtlog where 1=1 group by substr(tm_smp,1,10)"

    C. 查询某个分区有多少数据量

        db2 "select count(*) from ixp.esbtlog where substr(tm_smp,1,10)='2019-01-08'"

注意事项:

 1. 请注意上方例子中的名称和分区范围。

2. 要想将一个已存在的表改成分区表,需要先将原表数据保存下来,删除表。再新建分区表,设定好表的分区及其范围,将原数据导入进去。

相关文章

  • oracle与db2分区的区别

    ORACLE和DB2都引入了partition的概念.但是区别还是相当大的. ORACLE的分区是表的分区,每张表...

  • db2表分区

    1. 表分区作用 表分区可扩展表的存储能力、对于大量数据表使用分区字段可提高查询效率。 2. 创建表分区 cre...

  • 【DB2】Partitioning表分区

    在项目中,我想要往表中插入一条数据,所有学过数据库的人应该都会懂。 多简单,是吧。然而,死活插不进去! 怎么回事呢...

  • db2表分区删除

    1.常规方法 delete 查询条件 1.1.删除效率较慢 1.2.经常确认归档日志是否占满 1.3.大的事务长期...

  • db2表空间管理常用命令

    一、表空间信息查看 # 1. 查看所有的表空间 db2 list tablespaces db2 list tab...

  • MBR分区与GPT分区

    Linux系统中有两种常见的分区表 MBR分区表(主引导记录分区表)和 GPT分区表(GUID分区表) MBR分区...

  • DB2维护0724

    维护管理相关 1.表空间监控 db2 list tablespaces db2 list tablespaces ...

  • Vertica的这些事(九)—— vertica存储统计信息

    vertica存储统计信息: 表数量: 分区表数量: 总表占大小: 分区表总大小: 分区表大小(前10): 分区表...

  • HiveQL 数据定义:分区

    分区• 建立分区表• 增加分区• 重命名分区• 删除分区 hive组织表到分区。它是将一个表到基于分区列,如日期,...

  • Mysql 分区表删除

    分区表删除部分分区 使用场景:从 MySQL 5.1 开始,支持分区 创建日志表时建议使用分区方式 在上表的分区表...

网友评论

      本文标题:db2表分区

      本文链接:https://www.haomeiwen.com/subject/ljcswqtx.html