暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

创建HASH和KEY分区表

芬芳 2023-12-20
256

本文档介绍了创建HASH和KEY分区表的方法。

创建HASH分区表

语法

创建HASH分区表。将数据按照哈希规则打散到不同的分区上,支持表达式来对分区列的值进行处理。

CREATE TABLE ... PARTITION BY [LINEAR] HASH(expr) [PARTITIONS number]
( PARTITION partition_name1,
  PARTITION partition_name2,...);

参数

image.png

描述

HASH算法是按照对分区个数取模。
HASH分区支持扩展类型LINEAR HASH。LINEAR HASH与HASH的不同之处在于,LINEAR HASH使用线性二次幂算法,而HASH使用散列函数值的模数。在语法上,LINEAR HASH和HASH的唯一区别是LINEAR在PARTITION BY子句中添加了关键字。

示例

HASH类型的使用示例:

CREATE TABLE sales_hash
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)PARTITION by HASH (month(date))
PARTITIONS 12;

LINEAR HASH类型的使用示例:

CREATE TABLE sales_linear_hash
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)PARTITION by LINEAR HASH (month(date))
PARTITIONS 12;

创建KEY分区表

语法

CREATE TABLE [ schema. ]table_name
 table_definition
   PARTITION BY [LINEAR] KEY(column_list) [PARTITIONS number]
   (partition_definition [, partition_definition] ...);

其中,partition_definition为:

 PARTITION partition_name

参数

image.png

描述

KEY分区与HASH分区类似,也是按照HASH算法进行分区,采用与MySQL相同的HASH算法。
KEY分区与HASH分区的区别在于:

  • KEY分区可以没有分区字段,没有分区字段时,默认将主键字段作为分区键。如果没有主键字段时,则按照唯一键进行分区。
  • KEY分区支持多列分区字段。
  • KEY分区支持INT类型、字符类型、DATE类型、TIME类型、DATETIME类型。
  • KEY分区支持扩展类型LINEAR KEY。

示例

KEY类型的使用示例:

CREATE TABLE sales_key
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)PARTITION by key (dept_no)
PARTITIONS 12;

LINEAR KEY类型的使用示例:

CREATE TABLE sales_linear_key
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)PARTITION by linear key (dept_no)
PARTITIONS 12;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论