金仓数据库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模式下分区的基本操作。
参考文档:
暂无。