GBase8s分片表操作实践 (1)

222 阅读3分钟

@[TOC](Gbase8s 分片表)

参考链接 gbase 8s开发与管理网站 对分片表的介绍 GBase 8s数据库的空间管理

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	空间可包含大于2Gchunk
Position 5:	A	空间自动扩展

每个数据库空间有一个Chunk文件。Chunk输出信息中有size信息,这个信息是Chunk的页的数据,不是文件的字节大小。要得到Chunk的文件字节大小,需要用这个size乘以Chunk文件对应的数据库空间的pgsize。

查看空间剩余大小

剩余大小就是chunk输出信息中free数据乘以Chunk文件对应的数据库空间的pgsize。