GBase8s分片表操作实践

简介: GBase8s分片表操作实践

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  

1.png


查看空间大小


使用命令onstat -d 查看数据库空间信息。

2.png

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。


相关文章
|
9月前
|
存储 缓存 NoSQL
关于数据库分片我们需要知道的
本文探讨了数据库分片的解决方案,强调了数据库分片在数据存储规模增长时的实用性。分片是将数据分布到多台机器上的技术,通过横向扩展和纵向扩展实现。文章还详细介绍了数据库分片的四种主要实现方式:什么都不做、垂直扩展、复制和专用数据库。每种方式都有其优点和限制,例如,垂直扩展可能需要更多的硬件资源,而复制可以提高读取性能,但可能需要更多的存储空间。最终,选择数据库分片方案应根据问题的复杂性和资源可用性来决定。
127 1
关于数据库分片我们需要知道的
|
3天前
|
存储 消息中间件 负载均衡
技术心得记录:架构设计之数据分片
技术心得记录:架构设计之数据分片
|
4天前
|
关系型数据库 分布式数据库 数据库
PolarDB产品在使用的过程中如何设置优先级数据库节点
在PolarDB中设置优先级节点涉及登录管理控制台,创建新节点并选择“设置优先级”选项。优先级高的节点不等同于性能更好,而是系统优先处理请求的目标。配置时需依据实际需求。[链接](https://www.caigumoke.com/cj/e1a7fff4.html)[链接](https://www.caigumoke.com/yh/b3b74248.html)
|
2月前
|
SQL 算法 Java
分库分表如何管理不同实例中几万张分片表?
分库分表如何管理不同实例中几万张分片表?
184 2
|
2月前
|
存储 SQL 关系型数据库
drds逻辑表与物理解析
drds逻辑表与物理解析
54 5
|
存储 弹性计算 关系型数据库
实践教程之如何对PolarDB-X的存储节点发起备库重搭
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何对PolarDB-X的存储节点发起备库重搭。
|
关系型数据库 分布式数据库 PolarDB
PolarDB 物理复制刷脏约束问题和解决
PolarDB 目前物理复制到了ro 开始刷120s apply_lsn 不推进的信息以后, 即使压力停下来也无法恢复, 为什么? 如下图所示: ![image-20230410025547807](https://raw.githubusercontent.com/baotiao/bb/main/uPic/image-20230410025547807.png)
94 0
|
SQL 存储 关系型数据库
9 PostgreSQL 点对点多主表级复制-触发器篇|学习笔记
快速学习9 PostgreSQL 点对点多主表级复制-触发器篇
365 0
9 PostgreSQL 点对点多主表级复制-触发器篇|学习笔记
|
SQL 存储 NoSQL
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
528 0
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
|
SQL 存储 运维
PolarDB-X性能优化之多表连接时table group及广播表的使用
通过实验演示多表连接时,PolarDB-X使用table group和广播表优化sql执行
256 0