文档中心MogDBMogDB StackUqbar
v3.1

文档:v3.1

支持的版本:

其他版本:

何时使用哈希分区

哈希分区对于基于哈希算法在分区之间随机分布数据,而不是对相似数据进行分组很有用。

在有些情况下,虽然可以确定分区关键字,但分区数据应该位于哪个分区并不明显。有些情况则不希望像范围分区那样对相似数据进行分组,而是希望数据的分布与其业务或逻辑视图不一致。哈希分区根据将关键字传递给哈希算法的结果,将某一行放入某个分区中。

使用这种方法,数据在分区中随机分布而非分组。这对于某些数据来说是一种很好的方法,但可能不适用于管理历史数据。然而,哈希分区与范围分区具有一些相同的性能特征。例如,分区裁剪仅限于等式谓词。您还可以使用分区连接、并行索引访问和并行DML。

哈希分区的优点是,数据的分布几乎是随机的,所以分布相对均匀,能够在一定程度上避免热点问题。

哈希分区的缺点是:

  • 在不额外存储数据的情况下,无法执行范围查询。
  • 在添加或删除节点时,由于每个节点都需要一个相应的哈希值,所以增加节点需要修改哈希函数,这会导致许多现有的数据都要重新映射,引起数据大规模移动。并且在此期间,系统可能无法继续工作。

示例1使用列s_productid作为分区关键字为表sales_hash创建了四个哈希分区。与products表的并行连接可以利用部分或完全分区连接。此时分区裁剪有利于仅访问单个产品或一部分产品的销售数据的查询。

如果您没有明确指定分区名称,而是指定哈希分区的编号,那么MogDB会自动为分区生成内部名称。

示例1 创建具有哈希分区的表

CREATE TABLE sales_hash
  (s_productid  NUMBER,
   s_saledate   DATE,
   s_custid     NUMBER,
   s_totalprice NUMBER)
PARTITION BY HASH(s_productid)
( PARTITION p1 , 
  PARTITION p2, 
  PARTITION p3 , 
  PARTITION p4 
);
Copyright © 2011-2024 www.enmotech.com All rights reserved.