1. 分區表相關的系統對象視圖
syscat.tables -- 表信息
sysibm.systables ---表信息
syscat.datapartitions --分區表信息
syscat.datapartitionexpression --分區表分區字段字段信息
2.分區表特性
支持MINVALUE、MAXVALUE;
支持值的上下邊界限制,INCLUSIVE、EXCLUSIVE;
僅支持range 的一級分區(目前);
支持多字段的分區鍵;
注:db2 using hashing 為distrubute by hash()分布表的意思,與分區表概念不同。
--新建分區表
create table test_part (c1 int not null , c2 varchar(20), c3 varchar(8) not null) partition by range(c3)
(starting '20210101',
statring '20210401' ending '20210630',
statring '20210701' ending '20210930',
statring '20211001' ending '20211231'
) data capture changes
--查看表分區
方式一:
SELECT * FROM SYSCAT.datapartitions WHERE TABNAME='TEST_PART'
方式二:
db2 describe data partitions for table TEST_PART
--添加表分區
alter table table_name add partition statis_month STARTINT'201301' INCLUSIVE ENDING '20090102' INCLUSIVE
--收集信息
db2 runstats on table schema.table_name
--使用的頁
select tabname, npages from syscat.tables where tabname = 'table_name'
--數據占用空間
select tabname, npages*16384/(1024*1024) from syscat.tables where tabname = 'XXXXXX'
3. 分區數據刪除
db2 "create table t1 (id int, age int) partition by range(age)(partition part1 starting 1 ending 18, partition part2 starting 19 ending 60, partition part3 starting 61 ending 80)"
db2 "alter table t1 ACTIVATE COLUMN ACCESS CONTROL" --開啟列訪問控制
db2 "insert into t1 values (1,2),(2,8),(3,10),(4,20),(5,22),(6,61)" --開啟列訪問控制
db2 "alter table t1 detach partition part1 into t1_part1" --刪除分區數據,移動到新表
db2look -d tstdb -a -e -t t1_part1 --查看ddl
db2 "alter table DB2TST.T1_PART1 DEACTIVATE ROW ACCESS CONTROL" --新表的去除行訪問限制
4.分區數據查看
--select * from tet parttion(p1); --db2不支持
用以下方式:
select * from TEST_PART2 where (c1,c3) between (10,'20210201') and (12, '20210228') and (c1,c3) != (12, '20210228');