mysql中扩充时间分区表
连接数据库:mysql -h x.x.x.x -P 端口号 -u 用户名 -p密码
show databases;
use 你自己的库名;
show tables;
show full columns from alarm; 查看表的属性 alarm是表名
我的库lianxi中的表举例如下:
show tables;
+--------------------+
| Tables_in_lianxi |
+--------------------+
| temp |
+--------------------+
查看具体数据库下的某张表的分区情况:(先进去指定的数据库中,再敲本命令,下面的命令是一个整体,不要分开执行)
本文中以表:temp 举例进行分区操作
select
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from information_schema.partitions where
table_schema = schema()
and table_name='temp';
把下面的table_name更换成你要查询的分区表的名字
通过执行上面的命令你能够看到temp表中最后一个分区的名字,此处假如为:p20190501,这个分区的意思是,数据库中temp表只能存储时间到5月1日为止的数据,超过2019年5月1日的数据将不再存储,现在我将p20190501再次扩充为7个,p20190601至p20191001,每一个分区都要有对应的存储截止时间,例,PARTITION p20190501 VALUES LESS THAN (1559318400), 就表示p20190501存储区将存储数据从5月1日开始至6月1日(其时间戳为:1559318400)
将最后一个分区表扩充为7个:
alter table temp REORGANIZE PARTITION p20190501 INTO
(PARTITION p20190501 VALUES LESS THAN (1559318400),
PARTITION p20190601 VALUES LESS THAN (1561910400),
PARTITION p20190701 VALUES LESS THAN (1564588800),
PARTITION p20190801 VALUES LESS THAN (1567267200),
PARTITION p20190901 VALUES LESS THAN (1569859200),
PARTITION p20191001 VALUES LESS THAN (1572537600),
PARTITION pmax VALUES LESS THAN MAXVALUE); 《---此处表示将时间分区表的最后一个区设置为pmax,这样可以防止当没有设定足够长时间分区时,后续的数据如果超过了所有的时间分区而无法存储到数据库中的尴尬处境。
例:将最后一个分区扩充为18个:
alter table temp REORGANIZE PARTITION pmax INTO
(PARTITION p20191101 VALUES LESS THAN (1575129600),
PARTITION p20191201 VALUES LESS THAN (1577808000),
PARTITION p20200101 VALUES LESS THAN (1580486400),
PARTITION p20200201 VALUES LESS THAN (1582992000),
PARTITION p20200301 VALUES LESS THAN (1585670400),
PARTITION p20200401 VALUES LESS THAN (1588262400),
PARTITION p20200501 VALUES LESS THAN (1590940800),
PARTITION p20200601 VALUES LESS THAN (1593532800),
PARTITION p20200701 VALUES LESS THAN (1596211200),
PARTITION p20200801 VALUES LESS THAN (1598889600),
PARTITION p20200901 VALUES LESS THAN (1601481600),
PARTITION p20201001 VALUES LESS THAN (1604160000),
PARTITION p20201101 VALUES LESS THAN (1606752000),
PARTITION p20201201 VALUES LESS THAN (1609430400),
PARTITION p20210101 VALUES LESS THAN (1612108800),
PARTITION p20210201 VALUES LESS THAN (1614528000),
PARTITION p20210301 VALUES LESS THAN (1617206400),
PARTITION pmax VALUES LESS THAN MAXVALUE);