以下是我对MySQL分区不分的理解,仅供参考。
MySQL从5.1版本后支持分区的功能,分区是根据一定规则,将满足相同条件的数据存储在一起,以便更方便的对数据经行管理。
在建立分区前,我们首先查看使用的MySQL版本是否支持分区:
show variables like '%partition%';
若是看到partition的值为yes,则支持分区。
分区类型:
- 1. range分区
- 2. list分区
- 3. hash分区
- 4. key分区
所有分区类型,不能使用主键/唯一键之外的字段经行分区!!!
1、range分区:依据给定的连续范围,将数据按照规则存储到对应分区上。
代码实现:
- range分区的创建:
mysql> create table ranges(
-> id int ,
-> age int,
-> time timestamp default current_timestamp on update current_timestamp,
-> primary key (id)
-> )
-> partition by range(id)(
-> partition p0 values less than (5),
-> partition p1 values less than (10),
-> partition p2 values less than (15)
-> );
Query OK, 0 rows affected (0.07 sec)
插入数据:
mysql> insert into ranges (id ,age) values(1,20),(2,21),(3,22),(4,23),(5,24),(6,29),(7,32),(8,43),(9,23),(10,54),(11,23),(12,45),(13,90),(14,54);
Query OK, 14 rows affected (0.00 sec)
Records: 14 Duplicates: 0 Warnings: 0
查询range分区相关信息:
mysql> select partition_name name,
-> partition_expression expresstion,
-> partition_description description,
-> table_rows
-> from information_schema.partitions
-> where table_schema=schema