人大金仓数据库KingbaseES中分区表的使用

金仓数据库KingbaseES中分区表的使用

关键字:

KingbaseES、分区表、人大金仓

一、安装前准备

1.1 软件环境要求

金仓数据库管理系统KingbaseES V8.0支持微软Windows 7、Windows XP、Windows 2003、 Windows 2008等32位及64位发行版本。

1.2 安装包准备

准备需要安装的金仓数据库管理系统KingbaseES安装程序和jdk1.8及以上的jdk环境。

1.3 安装数据库

1.3.1 安装数据库
在安装金仓数据库管理系统KingbaseES V8.0时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。

1.3.2 分别初始化oracle、mysql、pg三种模式的数据库

初始化命令:./initdb -USYSTEM -D data_orc  --dbmode=oracle –A trust

去所创建的的data_orc下的kingbase.conf修改端口文件。

二、分区表基础理论

2.1 分区

分区是一种表的设计模式,是将一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理块组成的,提高了存储、查询数据的效率,若表中一个分区发生故障,其他分区不受影响,此操作对应用程序是透明的,并没有增加开发工作量。常见的四种分区类型包括:RANGE分区、LIST分区、HASH分区、KEY分区。.

2.1.1 RANGE分区

基于属于一个给定连续区间的列值,把多行分配给分区,最常见是基于时间、数值字段进行分区。

2.1.2 LIST分区

LIST分区和RANGE分区类似,区别在于LIST是枚举值列表的集合,RANGE是连续区间值的集合。

2.1.3 HASH分区

基于用户定义的表达式的返回值来进行选择的分区,该表达式将待插入到表中的这些行的列值进行HASH计算得到存储分区。

2.1.4 KEY分区

类似于HASH分区,区别在于KEY分区只支持计算一列或多列

2.2 分表

分表是将一张表按照一定的规则分解成N个具有独立存储空间的实体表。

2.3 分库

当数据库中的表越来越多时,数据库查找的效率会下降,便会按照一定的规则进行分库,以提高数据库工作效率。

三、各数据库模式中的分区应用

3.1 mysql模式(oracle模式操作与之相似)

3.1.1创建分区表

Create table tr(

id INT,

birth DATE

)

PARTITION BY RANGE (YEAR(birth))(

PARTITION p1 VALUES LESS THAN(1990),

PARTITION p2 VALUES LESS THAN(2000),

PARTITION p3 VALUES LESS THAN(2010),

PARTITION p4 VALUES LESS THAN(2015),

PARTITION p5 VALUES LESS THAN(2020),

);

3.1.2增加分区

alter table tr add partition(

partition p6 values less than(2025)

);

3.1.3拆分分区

alter table tr reorganize partiton p3 into(

partition s1 values less than(2005),

partition s2 values less than(2010),

);

3.1.4合并分区

alter table tr reorganize partiton s1,s2 into(

partition p3 values less than(2010)

);

3.1.5清空分区数据

alter table tr truncate partiton p1;

3.1.6删除分区

alter table tr drop partiton p1;

3.1.7分区限制

(1)分区字段必须是整数类型或解析为整数的表达式

(2)分区字段建议设置为Not Null类型,若某行数据分区字段为null,在RANGE分区中,该行数据会划分到最小的分区里。

(3)Mysql分区中如果存在主键或唯一键,则分区列必须包含其中

(4)innodb分区表不支持外键。

3.2 PG模式

3.2.1创建主表

Create table tr(

id INT,

birth date

)PARTITION BY RANGE(birth)

3.2.2创建/添加子分区

Create table tr_p1 partition of tr for values from(‘2000-01-01’) TO (‘2005-01-01’);

Create table tr_p2 partition of tr for values from(‘2005-01-02’) TO (‘20010-01-01’);

3.2.3删除分区

DROP TABLE tr_p1;

3.2.4脱离主表

ALTER TABLE tr DETACH PARTITION tr_p1;

3.2.5给子分区加索引

CREATE INDEX ord_date ON tr_p1 USING btree(birth);

CREATE INDEX ord_date ON tr_p2 USING btree(birth);

四、总结

1、介绍了分区的基础理论知识。

2、介绍了在mysql、oracle、pgsql模式下分区的基本操作。

参考文档:

暂无。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值