• 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;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    显示的指定索引

    create index ix_tab_round_robin_id on tab_round_robin(id) in datadbs1;
    
    
    • 1
    • 2

    基于表达式分片

    “基于表达式分片”则根据表中的 一个或多个字段对分片的规则进行定义,一般在预知查询条件时采用这种方式,从而避免查询中对某些分片的扫描。
    特点:

    • 需要对数据分布有所了解
    • 为分片忽略和性能提升提供可能
    • 既可以用于表也可以用于索引
    • 可以基于一列或者多列构建表达式
    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    增加dbspaces空间

    创建新数据库空间,使用onspaces命令。

    onspaces -c -d <dbs_name> -k <page_size(kb)> -p <file_name> -o <offset> -s <file_size(kb)>
    
    • 1

    以下例子为创建一个临时 dbspace,名为 tempdbs1,大小为 500000,使用裸设备/dev/rdsk/device9,偏移量为 100000:

     onspaces -c -t -d tempdbs -p /dev/rdsk/device9 -o 100000 -s 500000  
    
    • 1

    在这里插入图片描述

    查看空间大小

    使用命令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	空间自动扩展
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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

    查看空间剩余大小

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

  • 相关阅读:
    C++是不是最容易产生猪队友的编程语言之一?
    Node.js | 使用内置模块 event 实现发布订阅模式
    MongoDB - 非关系型数据库概念
    Java入门第116课——向List中插入和删除元素
    FlinkCDC菜鸟教程/演示 MongoDB基于Flink CDC 导入 Elasticsearch
    ajax及请求方式get、post的区别
    Python和Java哪个更好找工作?
    Ubuntu 14.04:PaddleOCR基于PaddleServing的在线服务化部署(失败)
    RabbitMQ简介
    k8s svc流量转发
  • 原文地址:https://blog.csdn.net/weixin_43786143/article/details/127684480