广告
返回顶部
首页 > 资讯 > 数据库 >db2 定义分区表和分区键
  • 762
分享到

db2 定义分区表和分区键

2024-04-02 19:04:59 762人浏览 独家记忆
摘要

下面,为了提高数据库性能,我们将不同的分区放到不同的表空间下。首先创建6个表空间,3个数据表空间,3个索引表空间:db2 "create tablespace ts_dat managed by

下面,为了提高数据库性能,我们将不同的分区放到不同的表空间下。首先创建6个表空间,3个数据表空间,3个索引表空间:
db2 "create tablespace ts_dat managed by database using (file '/home/db2inst1/data/ts_dat' 100M)"
db2 "create tablespace ts_dat1 managed by database using (file '/home/db2inst1/data/ts_dat1' 100M)"
db2 "create tablespace ts_dat2 managed by database using (file '/home/db2inst1/data/ts_dat2' 100M)"
db2 "create tablespace ts_idx managed by database using (file '/home/db2inst1/data/ts_idx' 100M)"
db2 "create tablespace ts_idx1 managed by database using (file '/home/db2inst1/data/ts_idx1' 100M)"
db2 "create tablespace ts_idx2 managed by database using (file '/home/db2inst1/data/ts_idx2' 100M)"

首次执行后不需要执行
--DDL for Bufferpools--
CREATE BUFFERPOOL "BP32K_DATA" SIZE 32768 PAGESIZE 32768;
CREATE BUFFERPOOL "BP32K_INDEX" SIZE 32768 PAGESIZE 32768;

--Minic Storage Groups--
ALTER STOGROUP "IBMSTOGROUP" OVERHEAD 6.725000 DEVICE READ RATE 100.000000 DATA TAG NONE SET AS DEFAULT;


创建用户临时表空间
CREATE USER TEMPORARY TABLESPACE "USER_TMP" IN DATABASE PARTITioN GROUP IBMDEFAULTGROUP PAGESIZE 32768 MANAGED BY SYSTEM
--修改表空名TABLESPACE "USER_TMP"
 USING ('/home/db2inst1/data/usrtmp')----修改路径'/home/db2inst1/data/usrtmp'
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;
 
创建系统临时表空间
CREATE TEMPORARY TABLESPACE "TMP_SYSTEM"  PAGESIZE 32768 MANAGED BY SYSTEM
 USING ('/home/db2inst1/data/SYStmp')
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;
 
创建普通表空间
CREATE LARGE TABLESPACE "IDM_DATATABLE"  PAGESIZE 32768 MANAGED BY DATABASE
----修改表空间TABLESPACE "IDM_DATATABLE"
 USING (file '/home/db2inst1/data/IDM_datatable' 100M)-----修改路径和大小
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;
 

 
CREATE TABLESPACE "IDMINDX"  PAGESIZE 32768 MANAGED BY DATABASE
 USING (file '/home/db2inst1/data/IDMINDX' 100M)
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;
 
 
CREATE LARGE TABLESPACE "IDMDTL1"  PAGESIZE 32768 MANAGED BY DATABASE
 USING (file '/home/db2inst1/data/IDMDTL1' 100M)
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;
 
 
CREATE LARGE TABLESPACE "IDMDTL2"  PAGESIZE 32768 MANAGED BY DATABASE
 USING (file '/home/db2inst1/data/IDMDTL2' 100M)
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;
 
 
 CREATE LARGE TABLESPACE "IDMDTL3"  PAGESIZE 32768 MANAGED BY DATABASE
 USING (file '/home/db2inst1/data/IDMDTL3' 100M)
 EXTENTSIZE 64
 PREFETCHSIZE AUTOMATIC
 BUFFERPOOL "BP32K_DATA"
 OVERHEAD 6.725000
 TRANSFERRATE 0.320000
 NO FILE SYSTEM CACHING
 DROPPED TABLE RECOVERY OFF;


分区表类型
  1、自动分区
  2、手工分区      
 
PARTITION BY RANGE(分区列)   

(PART 分区名 STARTING 开始  ENDING 结束 IN 表空间 INDEX IN 索引在表空间)


省略starting,下一个上一个结束  
STARTING(2017,1) ENDING (2017,6),
                 ENDING (2017, 9),                
                 ENDING (2017, 12),               
                 ENDING (2018, 12));
                
省略ending,结束为上一个的开始
PARTITION BY RANGE(COL35)
 (PART PART0 STARTING('2017-01-01') IN IDMDTL1,
 PART PART1 STARTING('2017-04-01') IN IDMDTL2,
 PART PART2 STARTING('2017-07-01') IN IDMDTL3,
 PART PART3 STARTING('2017-10-01') ENDING('2017-12-31') IN IDMDTL1,


EEXCLUSIVE 分区2018-02-01这个排除在外
PART IDM_TRANSDTL_PART201801 STARTING('2018-01-01') ENDING('2018-02-01') EXCLUSIVE IN IDMDTL1 INDEX IN IDMINDX,                              

表分区键不支持的数据类型如下:
用户定义的类型(结构化)
LONG VARCHAR
LONG VARCHAR FOR BIT DATA
BLOB
BINARY LARGE OBJECT
CLOB
CHARACTER LARGE OBJECT
DBCLOB
LONG VARGRAPHIC
REF
C变长字符串
Pascal变长字符串
XML

db2 "describe DATA PARTITIONS for table parttabtest02 show detail"

实例:

实例1、表空间均匀分布在表空间上
CREATE TABLE parttabtest01
( ID                INTEGER NOT NULL,
  SALES_PERSON       VARCHAR(50),
  REGION             VARCHAR(50),
  SALES_DATE         DATE)
  IN ts_dat1,ts_dat2     ------指定表在分区上
  INDEX IN ts_idx        ------指定索引分区上
  PARTITION BY RANGE(SALES_DATE)
( STARTING MINVALUE, STARTING '1/1/2012' ENDING '12/31/2012' EVERY 1 MONTH,ENDING MAXVALUE);

实例2、
类似的,我们也可以在分区后面加表空间名称,显式地为分区指定所在的表空间。
对于建立分区语句里没有指定表空间的分区,使用CREATE TABLE里指定的表空间。
CREATE TABLE  parttabtest02
( ID                 INTEGER NOT NULL,
  SALES_PERSON       VARCHAR(50),
  REGION             VARCHAR(50),
  SALES_DATE         DATE)
  IN TS_DAT
  INDEX IN TS_IDX
  PARTITION BY RANGE(SALES_DATE)
( PART PJAN STARTING '1/1/2017' ENDING '3/31/2017' IN TS_DAT1 INDEX IN TS_IDX1,-----指定分区在指定的表空间上
  PART PFEB STARTING '4/1/2017' ENDING '7/31/2017' IN TS_DAT1 INDEX IN TS_IDX1,
  PART PMAR STARTING '8/1/2017' ENDING '12/31/2017' IN TS_DAT2 INDEX IN TS_IDX2,
  PART PAPR STARTING '1/1/2018' ENDING '11/31/2018' )
 
 

实例3、
如果选择使用CREATE TABLE语句的EVERY子句来自动生成数据分区,那么只能将一列用作表分区键。
如果选择通过在CREATE TABLE语句的PARTITION BY子句中指定每个范围来手动生成数据分区,
那么可以将多个列用作表分区键,如以下示例所示:
CREATE TABLE parttabtest03
( ID                INTEGER NOT NULL,
  SALES_PERSON     VARCHAR(50),
  REGION            VARCHAR(50),
  SALES_YEAR       INT,
  SALES_MONTH      INT)
  PARTITION BY RANGE(SALES_YEAR, SALES_MONTH)
( STARTING(2017,1) ENDING (2017,6),
  ENDING (2017, 9),
  ENDING (2017, 12),
  ENDING (2018, 12));
 
 
实例4、 
CREATE TABLE parttabtest04
( ID              INTEGER NOT NULL,
  SALES_PERSON     VARCHAR(50),
  REGION           VARCHAR(50),
  SALES_DATE       DATE,
  SALES_MONTH      GENERATED ALWAYS AS (month(SALES_DATE)))
  PARTITION BY RANGE(SALES_MONTH)
( STARTING FROM 1 ENDING AT 12 EVERY 1 );
 


表名
CREATE TABLE IDM_TRANSDTL (
 COL1 VARCHAR(22) NOT NULL,
 COL2 VARCHAR(8) NOT NULL,
 COL3 VARCHAR(8) NOT NULL,
 COL4 VARCHAR(6) NOT NULL,
 COL5 VARCHAR(6) ,
 COL6 VARCHAR(6) ,
 COL7 VARCHAR(40) ,
 COL8 VARCHAR(4) ,
 COL9 VARCHAR(3) ,
 COL10 VARCHAR(8) ,
 COL11 VARCHAR(22) ,
 COL12 VARCHAR(4) ,
 COL13 VARCHAR(14) ,
 COL14 VARCHAR(5) ,
 COL15 VARCHAR(30) ,
 COL16 VARCHAR(100) ,
 COL17 VARCHAR(20) ,
 COL18 VARCHAR(30) ,
 COL19 VARCHAR(30) ,
 COL20 VARCHAR(20) ,
 COL21 VARCHAR(1) ,
 COL22 VARCHAR(1) ,
 COL23 VARCHAR(20) ,
 COL24 VARCHAR(2) ,
 COL25 VARCHAR(14) ,
 COL26 VARCHAR(2) ,
 COL27 VARCHAR(10) ,
 COL28 VARCHAR(256) ,
 COL29 VARCHAR(20) ,
 COL30 VARCHAR(100) ,
 COL31 VARCHAR(100) ,
 COL32 VARCHAR(100) ,
 COL33 VARCHAR(100) ,
 COL34 VARCHAR(100) , 
 COL35 DATE NOT NULL WITH DEFAULT CURRENT DATE)
 INDEX IN IDMINDX PARTITION BY RANGE(COL35)
 (PART PART0 STARTING('2017-01-01') IN IDMDTL1,
 PART PART1 STARTING('2017-04-01') IN IDMDTL2,
 PART PART2 STARTING('2017-07-01') IN IDMDTL3,
 PART PART3 STARTING('2017-10-01') ENDING('2017-12-31') IN IDMDTL1,
 PART IDM_TRANSDTL_PART201801 STARTING('2018-01-01') ENDING('2018-02-01') EXCLUSIVE IN IDMDTL1 INDEX IN IDMINDX,
 PART IDM_TRANSDTL_PART201802 STARTING('2018-02-01') ENDING('2018-03-01') EXCLUSIVE IN IDMDTL2 INDEX IN IDMINDX, 
 PART IDM_TRANSDTL_PART201803 STARTING('2018-03-01') ENDING('2018-04-01') EXCLUSIVE IN IDMDTL3 INDEX IN IDMINDX, 
 PART IDM_TRANSDTL_PART201804 STARTING('2018-04-01') ENDING('2018-05-01') EXCLUSIVE IN IDMDTL1 INDEX IN IDMINDX,
 PART IDM_TRANSDTL_PART201805 STARTING('2018-05-01') ENDING('2018-06-01') EXCLUSIVE IN IDMDTL2 INDEX IN IDMINDX, 
 PART IDM_TRANSDTL_PART201806 STARTING('2018-06-01') ENDING('2018-07-01') EXCLUSIVE IN IDMDTL3 INDEX IN IDMINDX,  
 PART IDM_TRANSDTL_PART201807 STARTING('2018-07-01') ENDING('2018-08-01') EXCLUSIVE IN IDMDTL1 INDEX IN IDMINDX,
 PART IDM_TRANSDTL_PART201808 STARTING('2018-08-01') ENDING('2018-09-01') EXCLUSIVE IN IDMDTL2 INDEX IN IDMINDX, 
 PART IDM_TRANSDTL_PART201809 STARTING('2018-09-01') ENDING('2018-10-01') EXCLUSIVE IN IDMDTL3 INDEX IN IDMINDX, 
 PART IDM_TRANSDTL_PART201810 STARTING('2018-10-01') ENDING('2018-11-01') EXCLUSIVE IN IDMDTL1 INDEX IN IDMINDX,
 PART IDM_TRANSDTL_PART201811 STARTING('2018-11-01') ENDING('2018-12-01') EXCLUSIVE IN IDMDTL2 INDEX IN IDMINDX, 
 PART IDM_TRANSDTL_PART201812 STARTING('2018-12-01') ENDING('2019-01-01') EXCLUSIVE IN IDMDTL3 INDEX IN IDMINDX)  
 


您可能感兴趣的文档:

--结束END--

本文标题: db2 定义分区表和分区键

本文链接: https://www.lsjlt.com/news/43371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • db2 定义分区表和分区键
    下面,为了提高数据库性能,我们将不同的分区放到不同的表空间下。首先创建6个表空间,3个数据表空间,3个索引表空间:db2 "create tablespace ts_dat managed by ...
    99+
    2022-10-18
  • 普通表转分区表(在线重定义)
    确认表是否可以分区 SQL> BEGIN   2  DBMS_REDEFINITION.CAN_REDEF_TABLE('SCOTT','EM...
    99+
    2022-10-18
  • MySQL 分区表,为什么分区键必须是主键的一部分?
    随着业务的不断发展,数据库中的数据会越来越多,相应地,单表的数据量也会越到越大,大到一个临界值,单表的查询性能就会下降。 这个临界值,并不能一概而论,它与硬件能力、具体业务有关。 虽然在很多 MySQL 运维规范里,都建议单表不超过 50...
    99+
    2015-06-16
    MySQL 分区表,为什么分区键必须是主键的一部分?
  • MySQL 分区表中分区键为什么必须是主键的一部分
    目录水平拆分 VS 垂直拆分分区表MySQL 8.0 中分区表的变化为什么分区键必须是主键的一部分?本地分区索引 VS 全局索引总结前言: 分区是一种表的设计模式,通俗地讲表分区是将...
    99+
    2022-11-13
  • ORACLE分区表转换在线重定义DBMS_REDEFINITION
    目录一、DBMS_REDEFINITION(在线重定义)使用在线重定义的一些限制条件:DBMS_REDEFINITION包:二、在线重定义表的步骤1.创建未分区的表2.确认表是否存在主键,表空间是否足够,收集表统计信息。...
    99+
    2022-07-07
    ORACLE分区表转换在线重定义 ORACLE分区表转换DBMS_REDEFINITION
  • oracle 11g在线重定义 普通表变分区表
    第一种方法    使用主键id进行重定义--create user test identified by 1 account unlock; --grant...
    99+
    2022-10-18
  • 在线重定义 ?普通表转换成分区表
    --收集表的统计信息 ...
    99+
    2022-10-18
  • MySQL分区表中分区键必须是主键一部分的原因是什么
    这篇文章主要介绍了MySQL分区表中分区键必须是主键一部分的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL分区表中分区键必须是主键一部分的原因是什么文章都会有所收获,下面我们一起来看看吧。前...
    99+
    2023-06-29
  • hadoop如何自定义分区
    今天小编给大家分享一下hadoop如何自定义分区的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。分区概念分区这个词对很多同学来...
    99+
    2023-06-29
  • oracle 分区表move和包含分区表的lob move
    表包含lob字段,需要收回空间,首先move表,move表,move完表后lob的空间并不会释放,还需要针对lob字段进行move:非分区表lob的move:alter table  T_SEND...
    99+
    2022-10-18
  • MySQL:分库分表与分区的区别和思考
    一.分分合合 说过很多次,不要拘泥于某一个技术的一点,技术是相通的。重要的是编程思想,思想是最重要的。当数据量大的时候,需要具有分的思想去细化粒度。当数据量太碎片的时候,需要具有合的思想来粗化粒度。 1.1 分 很多技术都运用了分...
    99+
    2017-07-09
    MySQL:分库分表与分区的区别和思考
  • 怎么自定义JDBCRDD的分区
    这篇文章主要讲解了“怎么自定义JDBCRDD的分区”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么自定义JDBCRDD的分区”吧!1,JDBCRDD使用val data = new Jdb...
    99+
    2023-06-19
  • MySQL的分表和分区介绍
        在日常开发或维护中经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果...
    99+
    2022-10-18
  • oracle_分区表的索引类型以及是否带分区键索引的区别
    One.     介绍一下分区表的索引类型,以及简述各个类型的适用场景。 ...
    99+
    2022-10-18
  • hadoop全面解读自定义分区
    分区概念 分区这个词对很多同学来说并不陌生,比如Java很多中间件中,像kafka的分区,mysql的分区表等,分区存在的意义在于将数据按照业务规则进行合理的划分,方便后续对各个分区...
    99+
    2022-11-13
  • hadoop中mapreducez如何自定义分区
    这篇文章主要为大家展示了“hadoop中mapreducez如何自定义分区”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hadoop中mapreducez如何自定义分区”这篇文章吧。packag...
    99+
    2023-06-02
  • 达梦数据库 分区表如何定时自动新增和删除子分区
    下面为自动删除、创建分区子表的存储过程和维护分区表的测试示例: 1 、每月定时增加一个分区子表 create or replace procedure addpartition(sTable...
    99+
    2022-10-18
  • MySql中的分表、分库、分片和分区的分析
    本篇内容介绍了“MySql中的分表、分库、分片和分区的分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&...
    99+
    2022-10-18
  • MySQL分区表和分桶表的操作详解
    目录1.创建分区表2.增删改查操作2.1 插入数据2.2 操作数据3. 二级分区表3.1 创建分区表3.2 插入数据4.动态分区5.分桶表5.1 新建分桶表5.2 插入数据5.3 既分区有分桶6 分区与分桶的区别1.创建...
    99+
    2023-05-12
    MySQL分区表和分桶表 MySQL分区表 MySQL分桶表
  • CentOS普通分区扩容和分区表是怎么样的
    这篇文章将为大家详细讲解有关CentOS普通分区扩容和分区表是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。案例分享:主机系统centos7.5默认系统上有一块40G的系统盘sda,...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作