文件名称:创建水平分区表-the design and analysis of algorithms
文件大小:4.17MB
文件格式:PDF
更新时间:2024-06-29 04:38:57
达梦,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)(