Gbase8s 的分片是用来处理数据量非常大的表和索引的技术。分片可以用将大表拆分为小表的方式进行管理,大大提高了gbase8s的大数据处理性能。
“表分片”技术与并行数据查询(PDQ)特征联系在一起使用,这样GBase 8s服务器 可以分配多条线索。从所有数据分片上并行地选取数据。此外,还可以仅仅对包含“目标数据”的数据分片进行扫描。从而大幅度地提高了整个系统效率。
- 分片是指把一个表的数据分散到多个dbspace中存储。
- 在逻辑上对外提供一个表的访问接口。
- 在数据库内部,物理上把大表拆分为多个小表进行管理。
两种分片方法
轮转法
“轮转法分片”这个存放方法采用轮询调度,依次在dbspaces上存储数据库。
特点:
- 简单,不需要了解数据的分布
- 把数据均匀地分配到所有分片中
- 提高查询性能
- 只能用于表,不能用于索引
- 不能用于分片忽略以增加性能
eg:
create table tab_round_robin ( id int, name varchar(40), nation varchar(40), regtime datetime year to second default current year to second not null ) fragment by round robin in datadbs1,datadbs2,datadbs3,datadbs4;
显示的指定索引
create index ix_tab_round_robin_id on tab_round_robin(id) in datadbs1;
基于表达式分片
“基于表达式分片”则根据表中的 一个或多个字段对分片的规则进行定义,一般在预知查询条件时采用这种方式,从而避免查询中对某些分片的扫描。
特点:
- 需要对数据分布有所了解
- 为分片忽略和性能提升提供可能
- 既可以用于表也可以用于索引
- 可以基于一列或者多列构建表达式
create table tab_expression_based ( id int, name varchar(40), nation varchar(40), regtime datetime year to second default current year to second not null ) fragment by expression id < 100 in datadbs1, id < 200 in datadbs2, id < 300 in datadbs3, REMAINDER in datadbs4;
增加dbspaces空间
创建新数据库空间,使用onspaces
命令。
onspaces -c -d <dbs_name> -k <page_size(kb)> -p <file_name> -o <offset> -s <file_size(kb)>
以下例子为创建一个临时 dbspace,名为 tempdbs1,大小为 500000,使用裸设备/dev/rdsk/device9,偏移量为 100000:
onspaces -c -t -d tempdbs -p /dev/rdsk/device9 -o 100000 -s 500000
查看空间大小
使用命令onstat -d
查看数据库空间信息。
number 为表空间唯一标示号 pagesize 数据库空间的页大小 flag 列信息: Position 1: M 镜像 N 未镜像 Position 2: X 新镜像 D Down,不可用chunk P 物理恢复完成,等待逻辑恢复 L 正在逻辑恢复 R 正在恢复 Position 3: B BLOB空间 P 物理日志空间 S 智能大对象空间 T 临时空间 U 临时智能大对象空间 W SDS主节点的临时空间,只在SDS备节点显示 Position 4: B 空间可包含大于2G的chunk Position 5: A 空间自动扩展
每个数据库空间有一个Chunk文件。Chunk输出信息中有size信息,这个信息是Chunk的页的数据,不是文件的字节大小。要得到Chunk的文件字节大小,需要用这个size乘以Chunk文件对应的数据库空间的pgsize。
查看空间剩余大小
剩余大小就是chunk输出信息中free数据乘以Chunk文件对应的数据库空间的pgsize。