db2 分区表

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

创建表空间、分区表、索引;初始分区表数据

db2 connect to saldev

db2 "create tablespace tbs1 managed by database using ( file'/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs1.bat' 200M)"
db2 "create tablespace tbs2 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs2.bat' 200M)"
db2 "create tablespace tbs3 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs3.bat' 200M)"
db2 "create tablespace tbs4 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs4.bat' 200M)"
db2 "create tablespace tbs5 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs5.bat' 200M)"
db2 "create tablespace tbs6 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs6.bat' 200M)"
db2 "create tablespace tbs7 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs7.bat' 200M)"
db2 "create tablespace tbs8 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs8.bat' 200M)"
db2 "create tablespace tbs9 managed by database using ( file '/dbfile/database/saldev/db2inst1/NODE0000/SALDEV/tbs9.bat' 200M)"

CREATE TABLE "DB      "."TBAR01PARTITION"  (
                  "AR01ID" VARCHAR(32) NOT NULL WITH DEFAULT '' ,
                  "COMPID" VARCHAR(32) WITH DEFAULT ''                   ,
                  "SRLTYPE" VARCHAR(10) WITH DEFAULT '' ,
                  "RECEIPTNO" VARCHAR(32) WITH DEFAULT '' ,
                  "CLIENTID" VARCHAR(32) WITH DEFAULT '' ,
                  "CONTRACTID" VARCHAR(32) WITH DEFAULT '' ,
                  "ITEMID" VARCHAR(32) WITH DEFAULT '' ,
                  "INDEXNO" VARCHAR(32) WITH DEFAULT '' ,
                  "AMTTYPEID" VARCHAR(32) WITH DEFAULT '' ,
                  "AMTPURPOSEID" VARCHAR(32) WITH DEFAULT '' ,
                  "CRCYUNIT" VARCHAR(32) WITH DEFAULT '' ,
                  "RECEIPTAMT" DECIMAL(20,4) WITH DEFAULT 0 ,
                  "RECEEXCHANGERATE" DECIMAL(20,4) WITH DEFAULT 0 ,
                  "RECEIPTREALAMT" DECIMAL(20,4) WITH DEFAULT 0 ,
                  "AMT" DECIMAL(20,4) WITH DEFAULT 0 ,
                  "EXCHANGERATE" DECIMAL(20,4) WITH DEFAULT 0 ,
                  "REALAMT" DECIMAL(20,4) WITH DEFAULT 0 ,
                  "DATAFROM" VARCHAR(10) WITH DEFAULT '' ,
                  "CREATOR" VARCHAR(32) WITH DEFAULT '' ,
                  "CREATEDATE" VARCHAR(10) WITH DEFAULT '' ,
                  "BALANCEDATE" VARCHAR(10) WITH DEFAULT '' ,
                  "REMARK" VARCHAR(500) WITH DEFAULT '' ,
                  "STATUS" VARCHAR(2) WITH DEFAULT '' ,
                  "CASTSTATE" INTEGER WITH DEFAULT 0 ,
                  "CREATETIME" VARCHAR(10) WITH DEFAULT ''


PARTITION BY RANGE(COMPID) (STARTING 'HP021105941720969' ENDING 'HP021105941720969' in tbs1,
                  STARTING 'HP021107313616235' ENDING 'HP021107313616235' in tbs2,
                  STARTING 'HP021107313616236' ENDING 'HP021107313616236' in tbs3,
                  STARTING 'HP021129192848107' ENDING 'HP021129192848107' in tbs4,
                  STARTING 'abcid' ENDING 'abcid' in tbs5,
                  STARTING 'cdsid' ENDING 'cdsid' in tbs6,
                  STARTING 'fsid' ENDING 'fsid' in tbs7,
                  STARTING 'hgid' ENDING 'hid' in tbs8,
                  STARTING 'tuid' ENDING 'tuid' in tbs9);
 
COMMENT ON COLUMN "DB"."TBAR01PARTITION"."CREATETIME" IS '';

ALTER TABLE "DB"."TBAR01PARTITION" ADD PRIMARY KEY ("AR01ID");

 

db2 insert into db.tbar01partition select * from db.tbar01;

数据规模:110万行


CREATE INDEX "DB"."TBAR01_compid" ON "DB"."TBAR01"  (compid,AR01ID)


CREATE INDEX "DB"."TBAR01_compid" ON "DB"."TBAR01PARTITION"  (compid,AR01ID)

 

 

 

查看执行效率:db2batch -d saldev -a db2inst1/db2admin -f '/home/db2inst1/123.txt' -i short -o p 3 f -1 r 0

执行效率对比:

/home/db2inst1/123.txt: select compid,INDEXNO,BALANCEDATE,CASTSTATE from db.tbar01 where compid='tuid';

Total Time:                 5.802100 seconds

 

/home/db2inst1/123.txt: select compid,INDEXNO,BALANCEDATE,CASTSTATE from db.tbar01 where compid='HP021107313616236';
Total Time:                 3.045026 seconds

 

/home/db2inst1/123.txt: select compid,INDEXNO,BALANCEDATE,CASTSTATE from db.tbar01partition where compid='tuid';
Total Time:                 2.300599 seconds

 

/home/db2inst1/123.txt: select compid,INDEXNO,BALANCEDATE,CASTSTATE from db.tbar01partition where compid='HP021107313616236';
Total Time:                 1.208957 seconds

 


/home/db2inst1/123.txt: select compid,count(CASTSTATE) from db.tbar01 where compid='tuid' or compid='HP021107313616236' group by compid;
Total Time:                 3.086487 seconds


/home/db2inst1/123.txt: select compid,count(CASTSTATE) from db.tbar01partition where compid='tuid' or compid='HP021107313616236' group by compid;

 Total Time:                 0.564414 seconds
 
 
/home/db2inst1/123.txt: select compid,count(CASTSTATE) from db.tbar01 where compid='tuid' or compid='HP021107313616236' or compid='HP021107313616235' group by compid;

Total Time:                 4.383428 seconds

/home/db2inst1/123.txt: select compid,count(CASTSTATE) from db.tbar01partition where compid='tuid' or compid='HP021107313616236' or compid='HP021107313616235' group by compid;
Total Time:                 0.854647 seconds

 

执行计划对比:

select compid,INDEXNO,BALANCEDATE,CASTSTATE from db.tbar01 where compid='HP021107313616236';

 DB2 <wbr>分区表

select compid,INDEXNO,BALANCEDATE,CASTSTATE from db.tbar01partition where compid='HP021107313616236';
 DB2 <wbr>分区表

select compid from db.tbar01partition where compid='HP021107313616236';       

DB2 <wbr>分区表

select compid,count(CASTSTATE) from db.tbar01 where compid='tuid' or compid='HP021107313616236' or compid='HP021107313616235' group by compid;

 DB2 <wbr>分区表

select compid,count(CASTSTATE) from db.tbar01partition where compid='tuid' or compid='HP021107313616236' or compid='HP021107313616235' group by compid;

 DB2 <wbr>分区表

 

结果分析: 

    通过执行效率分析可以看出,分区表的性能优势还是比较明显的,但创建分区表前需要在确定可以分区的数据列,如果将现有的表改建成分区表,则分析原表是否存在可以用来分区的列,如果没有需要添加。(通常按照月份、年份、公司别分区为多)。另外特别注意的是要对未来增加的数据进行分区规划。

    通过执行计划分析可以看出,分区表上的索引被使用的可能性比非分区表上的索引被使用的可能性小,在分区表上的查询非索引覆盖时没有用到创建的索引,索引覆盖时用到了创建的索引,相对应的,在非分区表上两种情况下都使用到了创建的索引;而且在 DB2 V9.7 之前,分区表上的索引是不能分区的。由于分区表很多情况都是应用在数据仓库环境中,当数据量很大的时候,索引也随之变得很大,从而导致一些的性能上降低(我的实验环境是DB2 9.1)。对于DB2 V9.7 之前的版本,这两点是分区表的两个不完善的地方,在使用时应该注意。

-------------

不支持的数据类型

分区表可以包含下列数据类型,但不支持将它们用作表 分区键列:
  • 用户定义的类型(结构化)
  • LONG VARCHAR
  • LONG VARCHAR FOR BIT DATA
  • BLOB
  • BINARY LARGE OBJECT
  • CLOB
  • CHARACTER LARGE OBJECT
  • DBCLOB
  • LONG VARGRAPHIC
  • REF
  • C 变长字符串
  • Pascal 变长字符串

分区表中,不支持 XML 数据类型。

如果您选择使用 CREATE TABLE 语句的 EVERY 子句来自动生成数据 分区,那么只能将一列用作表 分区键。如果您选择通过在 CREATE TABLE 语句的 PARTITION BY 子句中指定每个范围来手动生成数据 分区,那么可以将多个列用作表 分区键,如以下示例所示:
<span class="ph b" style="font-weight: bold;">CREATE TABLE</span> sales (year INT, month INT)
   <span class="ph b" style="font-weight: bold;">PARTITION BY RANGE</span>(year, month) 
   <span class="ph b" style="font-weight: bold;">(STARTING FROM</span> (2001, 1) <span class="ph b" style="font-weight: bold;">ENDING</span> (2001,3) <span class="ph b" style="font-weight: bold;">IN</span> tbsp1,
   <span class="ph b" style="font-weight: bold;">ENDING</span> (2001,6) <span class="ph b" style="font-weight: bold;">IN</span> tbsp2, <span class="ph b" style="font-weight: bold;">ENDING</span> (2001,9) 
   <span class="ph b" style="font-weight: bold;">IN</span> tbsp3, <span class="ph b" style="font-weight: bold;">ENDING</span> (2001,12) <span class="ph b" style="font-weight: bold;">IN</span> tbsp4,
   <span class="ph b" style="font-weight: bold;">ENDING</span> (2002,3) <span class="ph b" style="font-weight: bold;">IN</span> tbsp5, <span class="ph b" style="font-weight: bold;">ENDING</span> (2002,6) 
   <span class="ph b" style="font-weight: bold;">IN</span> tbsp6, <span class="ph b" style="font-weight: bold;">ENDING</span> (2002,9) <span class="ph b" style="font-weight: bold;">IN</span> tbsp7,
   <span class="ph b" style="font-weight: bold;">ENDING</span> (2002,12) <span class="ph b" style="font-weight: bold;">IN</span> tbsp8)
这将生成 8 个数据 分区,即 2001 年和 2002 年的每个季度有一个数据 分区
注:
  1. 当将多个列用作表分区键时,将把这些列视为组合键(类似于索引中的组合键),其中,后面的列依赖于前面的列。指定的每个起始值或结束值(所有列一起)不能超出 512 个字符。此限制与 SYSCAT.DATAPARTITIONS 目录视图中的 LOWVALUE 和 HIGHVALUE 列大小对应。如果指定超出 512 个字符的起始值或结束值,就会导致错误 SQL0636N,原因码为 9。
  2. 分区是多列的,而不是多维的。在表分区中,使用的所有列都包含在单个维中。

生成列

可以将生成列用作表分区键。此示例创建包含 12 个数据分区的表,即每个月一个数据分区。对于任何年份,一月份的所有行都将被放到第一个数据分区中,二月份的行将被放到第二个数据分区中,依此类推。

示例 1

<span class="ph b" style="font-weight: bold;">CREATE TABLE</span> monthly_sales (sales_date date,
	sales_month int <span class="ph b" style="font-weight: bold;">GENERATED ALWAYS AS</span> (month(sales_date)))
        	<span class="ph b" style="font-weight: bold;">PARTITION BY RANGE</span> (sales_month)
        	<span class="ph b" style="font-weight: bold;">(STARTING FROM</span> 1 <span class="ph b" style="font-weight: bold;">ENDING AT</span> 12 <span class="ph b" style="font-weight: bold;">EVERY</span> 1);
注:
  1. 对于表分区键中使用的生成列,不能改变或删除其表达式。不允许对表分区键中使用的列添加生成列表达式。对于表分区键中使用的列,如果尝试添加、删除或改变该列的生成列表达式,就会导致错误(SQL0270N,原因码为 52)。
  2. 如果生成列不是单调的,或者优化器无法检测出该列是否是单调的,就不会对范围谓词使用数据分区消除功能。如果存在非单调表达式,那么只能对等价或 IN 谓词执行数据分区消除功能。有关单调性的详细讨论和示例
--


db2 增加删除分区


由于在项目中在delete许多大表的数据,起初采用不写日志的方式,后在集成测试时发现,如果有在delete过程中出现中断,这时这个表就不能再用了,必须drop后重建,风险性比较大,后来经过查找资料,请教dba后采用另一种方法,修改大表的建表语句,使之变成分区表,然后进行detach把分区数据到临时表中,删除临时表,这个就达到删除数据目的了,下面我列出具体的操作步骤及相应的shell脚本。

 

1.创建分区表,INCLUSIVE(包含),exclusive(不包含)

 CREATE TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" (
  "REPORT_DATE" DATE,
  "MA_ACCT_NO" VARCHAR(100),
  "TRANS_DATE" DATE,
  "ORG_UNIT_ID" VARCHAR(15),
  "ORG_PROD_ID" VARCHAR(15),
  "CURR_CD" VARCHAR(15),
  "ACCT_NO" VARCHAR(15),
  "TRANS_NUM" VARCHAR(15),
  "TRANS_NO" VARCHAR(15),
  "TRANS_DIF" VARCHAR(15),
  "DEPOSIT_CHAR" VARCHAR(15),
  "DEPOSIT_BAL" DECIMAL(18,2),
  "TRANS_AMT" DECIMAL(18,2),
  "TRANS_TYPE" CHARACTER(1),
  "FLG" CHARACTER(1),
  "RATE" DECIMAL(18,6),
  "TRXMEM" DECIMAL(4,0)

  IN "MA_DATA"
  INDEX IN "MA_INDEX"
  PARTITION BY RANGE ( "REPORT_DATE" NULLS LAST ) ( PARTITION PART0 STARTING '2010-12-10' INCLUSIVE  ENDING '2010-12-20' INCLUSIVE )
   ;

ALTER TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK"
  DATA CAPTURE NONE
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE;

COMMENT ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" IS '活期交易明细表';

COMMENT ON "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" ( 
 "REPORT_DATE" IS '数据日期',
 "MA_ACCT_NO" IS '管会账号',
 "TRANS_DATE" IS '营业日期',
 "ORG_UNIT_ID" IS '行所号',
 "ORG_PROD_ID" IS '业务品种 ',
 "CURR_CD" IS '币别',
 "ACCT_NO" IS '帐号',
 "TRANS_NUM" IS '交易序号',
 "TRANS_NO" IS '交易代号',
 "TRANS_DIF" IS '交易区别',
 "DEPOSIT_CHAR" IS '存款性质 ',
 "DEPOSIT_BAL" IS '存款余额',
 "TRANS_AMT" IS '交易金额',
 "TRANS_TYPE" IS '交易别',
 "FLG" IS '连动标志',
 "RATE" IS '汇率' );

GRANT CONTROL ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2";

GRANT SELECT, INSERT, UPDATE, ALTER, DELETE,
    INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2" WITH GRANT OPTION;

GRANT SELECT, INSERT, UPDATE, ALTER, DELETE,
    INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "DB2INST2" WITH GRANT OPTION;

GRANT SELECT, INSERT, UPDATE, ALTER, DELETE,
    INDEX, REFERENCES ON TABLE "MABAS"."BAS_MID_TRANS_LIST_CK_BAK" TO USER "MAPUB" WITH GRANT OPTION;

2.增加分区,注意这里的INCLUSIVE,exclusive,这时只有2011-01-31的数据可以进行insert

alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK add partition LIST_CK_bak0131  STARTING '2011-01-31' INCLUSIVE ENDING  '2011-02-01' exclusive

3.insert 数据

insert into MABAS.BAS_MID_TRANS_LIST_CK_BAK select * from MABAS.BAS_MID_TRANS_LIST_CK where report_date=date('2011-01-31');

4.转移分区到临里表

alter table MABAS.BAS_MID_TRANS_LIST_CK_BAK detach partition LIST_CK_bak0131 into MABAS.BAS_MID_TRANS_LIST_CK_BAK1

5.删除生成的分区迁移表,注意这时分区表的分区(LIST_CK_bak0131)己经不存在了,如果要insert必须新增该分区

drop table MABAS.BAS_MID_TRANS_LIST_CK_BAK1

以下为应用写的shell脚本,并参照syscat.datapartitions 进行判断,如果有则删除分区,否则进行新建,以下为具体的脚本。

 

# 创建人员:    姜春涛   
# 创建日期:    2011-05-21
# 脚本描述:   删除表数据通用程序
# 修改人员:    
# 修改日期:    
# 修改原因:    
# 版本说明:    v1.0
# 公司名称:    宇信易诚
. /home/odsuser1/.profile
#配置文件
SYSNAME=GDBMA
MADS_HOME=/home/odsuser1/gdbma/etl
#DS Config
DSConfigFile=$MADS_HOME/dsconfig_gdbma
#MARPT ETL2数据库
#DB信息
DBNAME=`awk 'FS="=" {if ($0~/^MABASDBName/) print $2}' $DSConfigFile`
DBUSR=`awk 'FS="=" {if ($0~/^MABASDBUser/) print $2}' $DSConfigFile`
DBPWD=`awk 'FS="=" {if ($0~/^MABASDBPassword/) print $2}' $DSConfigFile`
DBSCHEMA=`awk 'FS="=" {if ($0~/^MABASDBSchema/) print $2}' $DSConfigFile`
DBPWD=`$MADS_HOME/Encrypt/discrypt.sh $DBPWD`
dbname=$DBNAME
user=$DBUSR
passwd=$DBPWD
#连接数据库
db2 connect to $DBNAME user $DBUSR using $DBPWD >/dev/null
db2 set schema=$DBSCHEMA;
#传递参数
JOB_NAME=$1
DELETE_DATE=$2
#DELETE_DBSCHEMA=$1
#DELETE_TAB=$2
#DELETE_COL=$3
#DELETE_TYPE=$4
#DELETE_DATE=$5
#DELETE_VALUE=$6

delete_tab="select SCH_NAME,TAB_NAME,IF_PARTITION,TAB_DATE,DEL_VALUE  from mabas.s_job_info_m t where JOB_NAME = '"$JOB_NAME"'  "
DEL_DATA=`db2 -t "$delete_tab"`
if [ $? -ne 0 ]
then
echo "$SDATA"
fi
echo "$DEL_DATA"  | sed -e '4,/^$/!d;/^$/d'|
#循环读取job,然后调度
while read SCH_NAME TAB_NAME IF_PARTITION TAB_DATE DEL_VALUE
do
#判断删除方式
#分区字段拼写
if [ "$IF_PARTITION" = 'Y' ]
   then
       #分区进行拼写
       partiton_name=`db2 -tx "select upper('p'||replace(varchar(date('"$DELETE_DATE"')),'-','')) from sysibm.sysdummy1 "`
       tmp_tab=`db2 -tx "select upper('tmp'||substr(replace(replace(varchar(current timestamp),'-',''),'.',''),5,10)) from sysibm.sysdummy1 "`
       #判断分区是否存在
       vi_result=`db2 -tx "select count(*) from syscat.datapartitions t where tabschema = upper('"$SCH_NAME"') 
                                                      and tabname = upper('"$TAB_NAME"')
                                                      and datapartitionname=upper('"$partiton_name"') "`
       #对分区进行操作
       if [ "$DEL_VALUE" = '-' ]
           then 
       #判断分区是否存在
           if [ $vi_result -ne 0 ]
               then 
               #进行分区数据到临时表
               alter_parition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME detach partition $partiton_name into $SCH_NAME.$tmp_tab"`
               #删除临时表
               drop_tmp=`db2 -tx "drop table $SCH_NAME.$tmp_tab"`
               #分区结束
               partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysdummy1"`
               #增加分区
               add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name  STARTING '"$DELETE_DATE"' INCLUSIVE ENDING  '"$partition_end"' exclusive "`
           else 
               #分区结束
               partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysdummy1"`
               #增加分区
               add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name  STARTING '"$DELETE_DATE"' INCLUSIVE ENDING  '"$partition_end"' exclusive "`
           fi
       else
           if [ $vi_result -ne 0 ]
               then 
               #进行分区数据到临时表
               drop_parition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME detach partition $partiton_name into $SCH_NAME.$tmp_tab "`
               #备份临时表中不属于该条件的数据
               delete_tab_date=`db2 -tx "delete from $SCH_NAME.$tmp_tab where "$DEL_VALUE" "`
               #分区结束
               partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysdummy1"`
               #增加分区
               add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name  STARTING '"$DELETE_DATE"' INCLUSIVE ENDING  '"$partition_end"' exclusive "`
               #insert 不符合删除条件的数据
               
               insert_date=`db2 -tx "insert into $SCH_NAME.$TAB_NAME select * from $SCH_NAME.$tmp_tab "`
           else
               #分区结束
               partition_end=`db2 -tx "select varchar(date('"$DELETE_DATE"') +1 days) from sysibm.sysdummy1"`
               #增加分区
               add_partition=`db2 -tx "alter table $SCH_NAME.$TAB_NAME add partition $partiton_name  STARTING '"$DELETE_DATE"' INCLUSIVE ENDING  '"$partition_end"' exclusive "`
           fi
       fi
else 
#直接删除表
       if [ "$DEL_VALUE" = "-" ]   
           then 
           delete_tab_data=`db2 -tx "delete from $SCH_NAME.$TAB_NAME where date("$TAB_DATE") = DATE('"$DELETE_DATE"') "`
       else
            delete_tab_data=`db2 -tx "delete from $SCH_NAME.$TAB_NAME where date("$TAB_DATE") = DATE('"$DELETE_DATE"') and $DEL_VALUE "`
       fi
fi
done
     








http://blog.chinaunix.net/uid-196042-id-2103401.html


http://blog.chinaunix.net/uid/196042/cid-38159-list-1.html


http://www.cppblog.com/prayer/archive/2010/04/15/112725.html

db2分区表创建实战个案分享 DB2是一种关系型数据库管理系统,支持分区表的创建。分区表是将大型表分成多个小表的一种方式,以提高查询和维护的效率。在创建分区表时,需要指定分区键和分区数,分区键是用于将数据分配到不同分区的列,分区数是指分区的数量。分区表的创建可以通过命令行或者图形化界面完成,具体步骤包括创建表空间、定义分区键、创建分区表等。分区表的使用可以提高数据库的性能和可伸缩性,使得大型数据集的查询和维护变得更加高效。 3、创建实际测试分区表 4、查看分布信息并建立索引 5、load数据导入数据 6 阅读详情

相关推荐

DB2分区表详解

db2分区表

Gorden的博客 1821

DB2分区表的建立详解

一个大型表的分区表改造方案以及详细步骤。

DB2分区表数据管理

一、检查分区 select datapartitionname,lowvalue,highvalue from syscat.partitions where tabname='XXX' and tabschema='XXX' order by datapartitionname; 二、分区剥离归档 1、db2 "ALTER TABLE ECIFAPP.CBM_CORP_DEP_DTL DE

白飞飞_Alan 3996

DB2>《DB2创建分区表及相关操作》(精华)

,这样查询数据时,不至于每次都扫描整张表而只是从当前的分区查到所要的数据大大提高了数据查询的速度。5、添加分区指的是:将最后一个分区拆离,添加新的分区后,再将最后一个分区的数据导入。当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该。A 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。B 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用。4、拆分:将一个分区拆分两个新分区,拆离后的分区将独立存在。说明:导入拆离分区备份的数据。

Else 的博客 2356

db2分区

db2表分区 (一)字段类型TIMESTAMP字段类型按月份自动分区 (二)TIMESTAMP字段类型自定义名称按月分区 (三)CHARACTER字段类型分区 (四)CHARACTER字段类型按月份自动分区

阿昊的博客 3881

DB2分区表创建及分区索引的创建

一直用oracle数据库,近期刚接触

sidy的专栏 3万+

DB2 分区表增加分区

最近,需要在DB2分区表中增加新的分区,用于存储数据,因此,就研究了DB2表的分区机制。现在总结,实现的方式共有三种,分别是:     1)、创建临时表,将原表数据导入临时表,之后将原表重建,扩大分区;     2)、通过ALTER TABLE TAB_NAME ADD PARTITION,为表增加分区;     3)、创建临时分区表,向临时分区表中导入数据,之后将临时分区表设置为主表的一

King's program process 1万+

DB2创建分区表的例子

分区表有着比较广泛的应用场景,特别是存储按月进行分区的数据时有明显的优势。下面是如何管理分区表的官方例子: Version 11.1.0 ----------------------------------------------------------------------------- -- (c) Copyright IBM Corp. 2007 All rights reserve

随风飘扬的博客 4384

DB2创建分区表

CREATE TABLE . ( USER_ID INTEGER NOT NULL, NAME VARCHAR(30),.... )--以上是正常创建表步骤,以下是创建分区表需要增加的 in tbs_data index in tbs_indx partition by range(part_day) ( partition p001 starting 1 ending 1, part

zoeyxy的专栏 8561

DB2分区表在线迁移实战指南

准备好了吗?系好安全带,我们出发。

weixin_42591413的博客 850

DB2分区表删除和添加分区

1.数据库版本 2.具体procedure DROP PROCEDURE DB2USER.TOOLS_PARTITION_TABLE_SHOW (VARCHAR ()); CREATE OR REPLACE PROCEDURE Tools_partition_table_show(IN ETL_DATE VARCHAR(8)) /*****************...

bantaoti1130的博客 1587

oracle和db2分区表操作比较及简要分析

在使用分区表时,会经常对分区表进行操作,包括删除分区、增加分区、 1、

sidy的专栏 2270

DB2重建分区表推荐步骤

目标: 假设有如下大分区表 A ,该表因为某些原因变得只读?如果用最快的方式重建? db2inst1@NODE01:~> db2look -d sample -a -e -t a CREATE TABLE "DB2INST1 "."A" ( "ID" INTEGER , "NAME" CHAR(10 OCTE...

匿_名_用_户的专栏 3375

DB2数据库创建分区表

创建表空间 CREATE TABLESPACE DMS01   CREATE TABLESPACE dms02   CREATE TABLESPACE dms03   创建表 CREATE TABLE artists ( artno SMALLINT NOT NULL PRIMARY KEY, name VARCHAR(50), picture BLOB(2M) NOT ...

1320

DB2分区表测试

分区表优点1.有效的转入和转出2.更容易管理大型表3.灵活的索引位置4.提供了商业智能样式查询性能https://www.cndba.cn/hbhe0316/article/4810https://www.cndba.cn/hbhe0316/article/4810 1.创建分区表https://www.cndba.cn/hbhe0316/article/4810 db2 "C...

hbhe0316的专栏 297

DB2分区表相关~

1.如何知道一个索引是分区索引还是非分区索引? 2.分区表上一定要有非分区索引吗? sycat.indexes和syscat.indexpartitions

nayanminxing的专栏 935

db2 最大分区数_【科普】文件分区表

0x01 分区表:划分土地分区表的意义就好比“老王有一块祖传的土地,他今年希望一半种玉米,一半种小麦。所以他把土地一分为二,中间用一个栅栏隔开,无论是播种还是施肥都分开管理。”现在有一块磁盘,为了将不同用途的文件分开存放,便于管理,就可以使用分区表将磁盘划分为不同分区。通过各种工具(比如Disk Genius)或者命令(比如mkfs)可以将分区转化为可以直接使用的文件系统。磁盘分区图分区...

weixin_35788791的博客 500

Db2 分区表坏页的处理

本文仅仅讨论Db2数据库中,当分区表出现坏页,并且数据库能正常连接的情况下,如何处理。 由于是分区表,直接从syscat.tables里查表ID,表空间ID不再适用。在db2diag.log报的obj ID是PARTITIONOBJECTID而非TABLEID,这时候需要查询SYSCAT.DATAPARTITIONS这个视图。 在db2diag.log中遇到以下报错,说明数据页有坏页:

匿_名_用_户的专栏 2201

DB2: 分区表Detach出来的表查询记录数为0

问题现象: DB2中有一个分区表,将分区表中的一个分区detach出来成为一个新表,查询该新表发现数据量为0,后来发现原因是原分区表上有column access control,因此detach出来的表默认是有row access control的。 这也说明一个坑:就是查询出来的某张表记录数为0,不代表这个表中没有数据,还有另外一种可能就是它开启了row access control 重现步骤: $ db2 "connect to tstdb" $ db2 "drop table t1"

匿_名_用_户的专栏 1280
上一篇: DB2 配置
下一篇: shell执行oracle存储过程,获得存储过程返回值
pianzif
博客等级 码龄16年 130粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值