#1. 什么是MySQL数据分区?
MySQL数据分区是将一张表的数据分散存储在不同的物理位置上,以实现更高效的数据管理和查询。根据分区的规则,MySQL会将表数据划分为多个分区,每个分区都可以独立地进行查询和维护。
#2. MySQL数据分区的优势
##2.1 提高查询效率
通过将数据分散存储在多个物理位置上,可以使查询只针对需要的数据进行,从而提高查询效率。
##2.2 减少维护成本
MySQL数据分区可以使数据更加有序和规范,减少数据冗余和重复,从而降低维护成本。
#3.创建分区
例如:创建表mytable,子段id,name,date,分区名称p0,p1,p2,使用date字段进行分区,p0分区存储2000以前的数据,p1分区存储2000年到2009年的数据,p2分区存储2010年及以后的数据。MAXVALUE表示所有大于2010年的数据。
**注意:**如果没有“PARTITION p2 VALUES LESS THAN MAXVALUE”最后一条语句,则数据库将不能存储2010年及以后的数据(即2010年以后的数据无法插入数据库)
CREATE TABLE mytable (
id INT,
name VARCHAR(50),
date DATE
)
PARTITION BY RANGE (YEAR(date)) (
PARTITION p0 VALUES LESS THAN (2000),
PARTITION p1 VALUES LESS THAN (2010),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
分区效果图
#4.特性
##4.1所有分区都是依次递增。
p0:p0<2000
p1:2000<=p1<2010
p2:2010<p2
意思就是说,每个分区代表一个区间,p2>p1>p0,而且如上图所示每个分区对应一个位置的序号,序号越大,说明这个区间的数据越大(单指数据大小,这个数据就是分区的字段,此处是用date分区,就是使用date 比较,使用哪个字段分区就是比较哪个字段)
##4.2分区只能增加和删除,不能修改。
例如:你想修改p2的分区,只能删除p2和p3的分区,再增加p2和p3的分区,才能达到修改分区的目的。也不能从p0和p1之间插入分区,因为每次增加分区是往后增加的(即依次递增)。
p0:p0<2000
p1:2000<=p1<2010
p2:2010<p2
比如你想增加一个2000<p4<2005,当你增加这个分区的时候,系统会默认p4的位置在第4位置,第4的位置应该要>p2才可以但是2000小于p2,违反分区特性,无法插入。
增加分区语句:
ALTER TABLE mytable ADD PARTITION (
PARTITION p3 VALUES LESS THAN (2030)
);
删除分区语句:
ALTER TABLE mytable DROP PARTITION p3;