分区表特性:
MySQL 5.6.7 之前,一个表最多有1024个分区,从5.6.7开始,一个表最多可以有8192个分区。
分区表无法使用外键约束。
NULL 值会使分区过滤无效。
所有分区必须使用相同的存储引擎。
选择频繁查询使用的列作为分区列,查询会直接在特定分区上进行
避免频繁更新的列为分区列,会导致数据在不同分区之间迁移。
分区表在查询的时候尽量使用分区列查询,查询语句不需要过多的改动。www
分区表常用命令:
1. 查询是否支持分区:
SHOW PLUGINS
若有 partition 行且 STATUS 列的值为 ACTIVE,则表示支持分区
2. 向分区添加新的分区:
ALTER TABLE sales ADD PARTITION (PARTITION p5 VALUES LESS THAN (2023));
3. 删除指定的分区
ALTER TABLE sales DROP PARTITION p3;
4. 重新组织分区
ALTER TABLE sales REORGANIZE p1, p2, p5 INTO (PARTITION p1 VALUES LESS THAN (2020), PARTITION p2 VALUES LESS THAN (2022), PARTITION p3 VALUES LESS THAN MAXVALUE);
5. 合并相邻的分区
ALTER TABLE sales COALESCE PARTITION p1, p2;
6. 分析指定分区的统计信息
ALTER TABLE sales ANALYZE PARTITION p1;:
1. 对于已有的表,改为分区表
分区键对应的列是主键或者是复合主键的一部分, 如果不是,需要删除旧主键,再创建复合主键,再设置自增
#如果主键是自增的,需要先取消自增
ALTER TABLE 表名 CHANGE id id BIGINT;
#先去掉旧主键,并等待完成
ALTER TABLE 表名 DROP PRIMARY KEY;
#创建符合主键,并等待完成
ALTER TABLE 表名 ADD PRIMARY KEY (id, batch_no);
#再设置id为自增
ALTER TABLE 表名 CHANGE id id BIGINT AUTO_INCREMENT;
2.对于已有的表 改为分区表:
按照半年一个分区,修改语法,如果表中已有数据, 在分区完成后,旧数据会自动按照分区规则分配至对应的分区.
RANGE COLUMNS 分区:
ALTER TABLE continue_data_1 PARTITION BY RA