当前位置:Gxlcms > 数据库问题 > Mysql 分区

Mysql 分区

时间:2021-07-01 10:21:17 帮助过:10人阅读

TABLE `customer` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ID, `init_time` datetime NOT NULL COMMENT 时间, PRIMARY KEY (`id`,`init_time`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=客户表 /*!50100 PARTITION BY RANGE (YEAR(init_time)) SUBPARTITION BY HASH (MONTH((init_time))) SUBPARTITIONS 12 (PARTITION p0 VALUES LESS THAN (2020) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (2021) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */;

分析:

上面 50100 是 mysql 的特有的注释,就是 mysql 可以执行的意思,表示 mysql 版本在 5.0.1以上才能执行

(1、/*...*/ 是注释,mysql不会执行。
2、mysql对标准sql进行了扩展,包含了一些自己的特性。
3、/*!...*/ 是一种特殊的注释,其他的数据库产品当然不会执行。mysql特殊处理,会选择性的执行。可以认为是:预编译中的条件编译。
4、特别注意 50100,它表示5.01.00 版本或者更高的版本,才执行。)

 

 或者:

ALTER TABLE `customer` 
PARTITION BY RANGE (YEAR(init_time)) PARTITIONS 3 
SUBPARTITION BY HASH (MONTH((init_time))) SUBPARTITIONS 12 ( #子分区按月分成12个
 PARTITION `p0` VALUES LESS THAN (2020),#19年
 PARTITION `p1` VALUES LESS THAN (2021),#20年
 PARTITION `p2` VALUES LESS THAN (MAXVALUE)#21年后
);

 

 修改分区:

#拆分增加分区:将p2拆分成p2和p3
ALTER TABLE customer REORGANIZE PARTITION p2 INTO (
 PARTITION p2 VALUES LESS THAN (2022),
 PARTITION p3 VALUES LESS THAN (MAXVALUE)
);

 

报错解决:

报错:A PRIMARY KEY must include all columns in the table’s partitioning function 
意思是说分区的字段必须是要包含在主键当中。 
所以当我们在使用 日期进行分区的时候,就需要将日期字段包含到主键当中去,

查看表分区数据量:
SELECT PARTITION_NAME,SUBPARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = customer;

 

Mysql 分区

标签:MySQL系统   选择   相关性   blob   延伸   表示   范围   列表   sch   

人气教程排行