【文件属性】:
文件名称:创建水平分区表-the design and analysis of algorithms
文件大小:4.17MB
文件格式:PDF
更新时间:2021-06-09 10:52:17
达梦,DM7
19.2 分区的方法
达梦数据库 DM7 支持对表进行水平分区和垂直分区。对于水平分区,提供以下分区方
式:
1. 范围(range)水平分区:对表中的某些列上值的范围进行分区,根据某个值的范
围,决定将该数据存储在哪个分区上;
2. 哈希(hash)水平分区:通过指定分区编号来均匀分布数据的一种分区类型,通
过在 I/O设备上进行散列分区,使得这些分区大小基本一致;
3. 列表(list)水平分区:通过指定表中的某个列的离散值集,来确定应当存储在
一起的数据。例如,可以对表上的 status列的值在('A','H','O')放在一个
分区,值在('B','I','P')放在另一个分区,以此类推;
4. 组合分区表:按上述三种分区方区进行任意组合,将表进行多次分区,称为组合分
区表。
而垂直分区就是将表按列分拆为多个分区,每个分区子表包含较少的列。如果查询表上
的某些列,并且这些列都在一个分区中,那么只需扫描这个分区即可,可以减少 I/O量。
19.3 创建水平分区表
在创建表的语法中,使用 partition子句指定分区方式和分区列,以及分区的名字等
信息,即可创建分区表。而分区子表可以指定 storage子句,设置子表的存储属性,如所
属表空间等;如果不指定,则继承分区主表的存储特性及表的其他属性。同时,支持组合分
区表。
水平分区表的 ROWID与其主表属性一致:LIST表的水平分区表的 ROWID是物理的;
普通表的水平分区表的 ROWID 是逻辑的,且每个子表的 ROWID 都是从 1 开始增长,但是
最终返回前,ROWID的高字节会补充上子表序号。
19.3.1 创建范围分区表
范围分区是按照某个列或几个列的值的范围来创建分区,当用户向表中写入数据时,数
据库服务器将按照这些列上的值进行判断,将数据写入相应的分区中。
在创建范围分区时,首先要指定分区列,即按照哪些列进行分区,然后为每个分区指定
数据范围。范围分区支持 MAXVALUE 范围值的使用,MAXVALUE 相当于一个比任何值都大
的值。范围分区非常适用于数据按时间范围组织的表,不同的时间段的数据属于不同的分区。
例如,以下语句创建一个范围分区表 callinfo,用来记录用户的 2010年的电话通讯
信息,包括主叫号码、被叫号码、通话时间和时长,并且根据季度进行分区。
CREATE TABLE callinfo(
caller CHAR(15),
callee CHAR(15),
time DATETIME,
duration INT
)
PARTITION BY RANGE(time)(