db2 分區表命令和總結



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');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM