Mysql分区

SHOW VARIABLES LIKE ‘%partition%’ ,查看 have_partition_engine的值为 yes,如果没有看到变量或者 NO,那么 Mysql不支持分区

同一个分区表中的所有分区必须使用同一个存储引擎
只能使用[STORAGE]ENGINE创建分区
mysql> CREATE TABLE emp (empid INT, salaryDECIMAL(7,2), birth_date DATE)
->ENGINE=INNODB
-> PARTITION BY HASH( MONTH(birth_date) )
-> PARTITIONS 6;
Query OK, 0 rows affected (0.11 sec)

分区类型
range 分区:基于一个给定连续区间范围,把数据分配到不同的分区,利用取值范围分成分区,区间要连续且不能互相重叠,使用 values less then 操作符进行分区定义
VALUES LESS THAN MAXVALUE提供给所有大于明确指定的最高值的值
当需要删除过期的数据时,只需要简单的ALTER TABLE empDROP PARTITION p0来删除p0分区中的数据。对于具有上百万条记录的表来说,删除分区要比运行一个DELETE语句有效得多

list 分区:类似 range 分区,区别在 list 分区是基于枚举出的值列表分区,range 是基于给定的连续区间范围分区
是建立离散的值列表高数数据库特定的值属于哪个分区
PARTITION BY LIST(expr)实现分区,VALUE IN(value_list)定义分区
例子:CREATE TABLE expenses(
expense_date DATE NOT NULL,
category VARCHAR(30),
amount DECIMAL(10,3)
)PARTITION BY LIST COLUMNS(category)(
PARTITION p0 VALUES IN(‘a’,‘b’,‘c’),
PARTITION p1 VALUES IN(‘d’,‘e’,‘f’),
);

hash 分区:基于给定的分区个数,把数据分配到不同的分区.
主要用来分散热点读,确保数据在预先确定的个数的分区中尽可能平均分布
Mysql 支持常规 HASH 分区(取模算法)和线性 HASH 分区(线性的 2 的幂的运算法则)
常规 HASH 分区的散列表,使用 PARTITION BY HASH(expr) PARTITIONS num
线性分区,使用 PARTITION BY LINEAR HASH (expr) PARTITIONS num
线性HASH分区的优点是,在分区维护(包含增加、删除、合并、拆分分区)时,MySQL能够处理得更加迅速;缺点是,对比常规HASH分区(取模)的时候,线性HASH各个分区之间数据的分布不太均衡。

key 分区:类似于 hash 分区,HASH分区只支持整数分区,而Key分区支持使用除BLOB or Text类型外其他类型的列作为分区键,PARTITION BY KEY (job) PARTITIONS num

无论是哪种 MySQL 分区类型,要么分区表上没有主键/唯一键,要么分区表的主键/唯一键都必须包含分区键,也就是说不能使用主键/唯一键字段之外的其他字段分区

columns分区,支持数据类型增加,还支持多列分区
CREATE TABLE rc3(a INT, B INT)
PARTITION BY RANGE COLUMNS(a,b)(
PARTITION p01 VALUES LESS THAN (0,10),
PARTITION p02 VALUES LESS THAN (10,10),
PARTITION p03 VALUES LESS THAN (10,20),
PARTITION p04 VALUES LESS THAN (10,35),
PARTITION p05 VALUES LESS THAN (10,MAXVALUE),
PARTITION p06 VALUES LESS THAN (MAXVALUE,MAXVALUE),
)

ALTER TABLE ADD PARTITION PARTITIONS n 新增 HASH 分区或 KEY 分区是,是对原表新增 n 个分区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值