mysql 分区

###分区
将某张表数据,分别存储到不同的区域中
每个分区,就是独立的表。都要存储该分区数据的数据,索引等信息。

检查mysql是否支持分区算法

####分区算法:
MySQL提供4种
取余:Key,hash
条件:List,range

Create table tab (
	字段
)
partition by 分区算法 (参数) 分区选项。

KEY – 取余
create table tab(
	id int not null auto_increment,
	birthday data,
	primary key (id)
)engine= myisam
-- 将一张表分成四份
partition by key(id) partitions 4;
Hash – 取余(按照某个表达式的值进行取余)
create table tab(
	id int not null auto_increment,
	birthday data,
	primary key (id,birthday)
)engine= myisam
-- 将一张表按月份分成12份
partition by hash(month(birthday)) partitions 12;
List – 条件 – 列表
需要指定的每个分区数据的存储条件
create table tab(
	id int not null auto_increment,
	birthday data,
	primary key (id,birthday)
)engine= myisam
-- 按月份把字段分为春夏秋冬
partition by list (month(birthday)) (
 partition spring values in (2,3,4),
 partition summer values in (5,6,7,8),
 partition autumn values in (9,10),
 partition winter values in (11,12,1)
);
Range - 条件 – 范围
条件依赖的数据是一个条件表达式
create table tab(
	id int not null auto_increment,
	birthday data,
	primary key (id,birthday)
)engine= myisam
-- 按年份把字段分为四份
partition by rang (year(birthday)) (
 partition 70 values less than (1980),
 partition 80 values less than (1990),
 partition 90 values less than (2000),
 partition 00 values less than MAXVALUE
);
管理分区语法
key,hash
-- 增加分区数量
alter table tab add partitions 1;
-- 减少分区数量
alter table tab COALESCE partitions 1;
list,range
-- 添加
alter table tab add partition (
	partition 10 values less than (2010)
);
-- 减少会导致分区数据丢失
alter table tab drop partition 10;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值