OceanBase中的分区表是什么?它有什么优势?

OceanBase中的分区表是什么?它有什么优势?

OBAI搬运的

OceanBase中的分区表是将普通表的数据按照一定规则划分到不同区块的表,每个区块称为一个分区,同一分区的数据在物理上存储在一起。分区表支持一级分区和二级分区,其中二级分区是对一级分区的进一步细分。

分区表的优势包括:

  1. 提高可扩展性
    分区表的不同分区可以分布在不同的机器上,使得单表能够利用多机的处理能力,并且单表的容量可以超过单机的限制。
  2. 增强查询性能
    在分析型场景(AP)中,分区键具有天然的过滤功能。例如,当数据按时间分区时,查询某个时间段的数据只需访问相关分区,而无需扫描整个表,从而加快查询速度。
  3. 更轻松地管理对象
    分区是独立的对象,可以单独管理。例如,DDL语句可以针对单个分区操作,而不是整个表或索引。这使得重建索引、移动分区或截断分区等操作更加高效。如果某个分区出现问题,只需重做该分区的操作,而不需要影响整个表。
  4. 提高可用性
    即使某些分区不可用,也不影响整个表的可用性。查询优化器会自动从查询计划中排除不可用的分区,从而保证查询的正常执行。
  5. 减少OLTP系统共享资源的争用
    在事务处理型场景(TP)中,分区可以将DML操作分散到多个分区上,从而减少对单一资源的争用,提升并发性能。
  6. 提供更好的负载均衡效果
    OceanBase的存储和负载均衡单位是分区,不同分区可以分布在不同节点上。通过分区表,可以将数据均匀分布在整个集群中,实现负载均衡。
  7. 支持读写分离
    每个分区在集群中有三个副本(一个主副本和两个备副本)。主副本负责写操作,默认也负责读操作。为了减轻主副本的压力,可以通过弱一致性读的方式让备副本承担部分读请求,从而实现读写分离。

示例

创建一个简单的分区表:

CREATE TABLE t1 (c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 5;

上述语句将表t1划分为5个分区,数据根据c1列的哈希值分布到不同的分区中。

总之,分区表在管理大规模数据、提升查询性能、增强系统可用性和扩展性等方面具有显著优势,是OceanBase数据库的重要特性之一。

1 个赞

提高查询效率,性能好,负载均衡

提升查询速度来着