mysql分区之ragne分区

range分区的概念

range分区是利用取值范围(区间)划分分区,区间要连续并且不能互相重叠,使用values less than操作符进行分区定义。

实际操作

下面我们将人的年龄划分为70后,80后,90后,不同年龄的人被放在不同的分区里

create table range_1(
  id mediumint unsigned auto_increment not null,
  birthday date,
  primary key (id,birthday) 
)engine=MyISAM partition by range(year(birthday))(
partition 70hou values less than(1980),
partition 80hou values less than(1990),
partition 90hou values less than(2000)
);
year()是sql中自带的函数,用于提取日期中的年份
70hou 80hou 90hou这是分区的名字,less than是小于的意思

插入数据进行测试

insert into range_1 values(null,'1972-05-20');
insert into range_1 values(null,'1983-03-20');
insert into range_1 values(null,'1984-04-20');

查看数据结构


图片.png

当插入一个数据不在分区之内会怎么样?比如现在插入一个00后


图片.png

因为没有符合条件的分区,所以这里就会报错.

如果id的大小可以预测:我们就可以这么指定分区:

create table range_1(
  id mediumint unsigned auto_increment not null,
  birthday date,
  primary key (id) 
)engine=MyISAM partition by range(id)(
partition 70hou values less than(1000),
partition 80hou values less than(2000),
partition 90hou values less than(3000)
);

将不同的根据id的范围放到不同的分区中.

总结

range就是范围分区,提前做好分区条件,然后插入值.这时每个值会找到适合自己的分区,然后存放进去.终于写完了四个分区,希望大家认真的看一看,有问题就下方留言,一起讨论.

你可能感兴趣的:(mysql分区之ragne分区)