13.HASH分区,KEY分区,COLUMNS分区

1.何为HASH分区?

故名思意,就是将列值通过特定的HASH函数计算后的值划分分区,HASH分区的目的是将数据均匀的分布到预先定义的各个分区中,保证数据均匀分布。
我们要做的是基于将要被散列的列值指定一个列值或表达式,以及指定被分区的表将要被分割的分区数量。
MySQL支持的HASH分区分为普通HASH分区和LINEAR HASH分区。

2.普通HASH分区实例学习

CREATE TABLE t_hash(
    a int,
    b datetime
)
partition by hash(year(b))
partitions 4;

上面建表语句中创建分区的意思是:根据b列的year()的函数值进行分区,计算方式是year(b)的值对4取余,
若结果为0,则该行数据会被放在p0分区
若结果为1,则该行数据会被放在p1分区
若结果为2,则该行数据会被放在p2分区
若结果为3,则该行数据会被放在p3分区

其中partitions 4代表着hash分区的数量为4,如果没有这个语句,分区数量默认为1.

下面插入一个记录:

INSERT INTO t_hash(a,b)values(1,'2014-10-01');

在这里插入图片描述

2014和4取余为2,所以该数据被放在p2分区中。

注意:HASH分区对于连续的列值做分区比较好,如自增长的主键,这样数据就能较好的分布。

3.LINEAR HASH分区

LINEAR HASH分区使用一个更加复杂的算法来确定插入到已分区的表中的位置。
用法如下:

CREATE TABLE t_linear_hash(
    a int,
    b datetime
)
partition by linear hash(year(b))
partitions 4;

对于这个分区,插入2010-04-01这条记录,这次MySQL数据库根据以下方法来对分区进行判断:
取大于分区数量4的下一个2的幂值V,V=POWER(2,CEILING(LOG(2,num)))=4.
所在分区N=YEAR(‘2010-04-01’)&(V-1)=2;

上面的算法不必深究,关键在于会用,知道其优缺点:
LINEAR HASH分区的优点在于增加,删除,合并和拆分分区将变得更加快捷,这有利于处理含有大量数据的表。
LINEAR HASH分区的缺点在于,与使用HASH分区得到的数据分布相比,各个分区间数据的分布可能不大均衡。

3.何为KEY分区?

KEY分区和HASH分区相似,不同之处在于HASH分区通过用户定义的函数进行分区,而KEY分区使用MySQL数据库提供的函数进行分区。

用法如下:

CREATE TABLE t_key(
    a int,
    b datetime
)
partition by key(b)
partitions 4;

不过这个分区的编号是通过2的幂值得到的,而不是通过模数算法计算出来的。

4.何为COLUMNS分区?

COLUMNS分区允许分区条件为非整型,分区根据类型直接比较而得到,不需要转化为整型。
此外,RANGE COLUMNS分区可以对多个列的值进行分区,COLUMNS分区支持以下数据类型:
所有整型
日期类型
字符串类型

用法如下:

CREATE TABLE t_columns_range(
    a int,
    b datetime
)
partition by range columns (b)(
    partition p0 values less than ('2009-01-01'),
    partition p1 values less than ('2010-01-01')
);

MySQL从5.5开始支持COLUMNS分区,对于前面的range分区和list分区,可以很好的利用RANGE COLUMNS分区和LIST COLUMNS分区代替。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值