mysql数据库,按照时间分区

tech2026-03-08  5

分区优点:

1. 可以按照group by对分区进行并行查询。 2. 数据归档方便,不同的分区为不同的数据库文件。 3. 跨磁盘存储数据。

缺点:

分区数量 5.1前为 1024个,以后为1024*8分区键必须为主键,可以是联合主键分区为水平分区,底层为单独的数据表。

注意

分区字段需要是key,设置和自增主键的联合主键。 或单独增加字段作为分区键

CREATE TABLE t_user ( id INT ( 8 ) NOT NULL AUTO_INCREMENT, `username` VARCHAR ( 255 ) NOT NULL, `address` VARCHAR ( 255 ) NOT NULL, `tel` VARCHAR ( 255 ) NOT NULL, birtyday TIMESTAMP NOT NULL, PRIMARY KEY ( id, birtyday ) ) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 PARTITION BY RANGE ( UNIX_TIMESTAMP( birtyday )) PARTITIONS 4 ( PARTITION p0 VALUES LESS THAN ( UNIX_TIMESTAMP( '2001-09-11' )), PARTITION p1 VALUES LESS THAN ( UNIX_TIMESTAMP( '2011-09-11' )), PARTITION p2 VALUES LESS THAN ( UNIX_TIMESTAMP( '2021-09-11' )), PARTITION p19 VALUES LESS THAN MAXVALUE );

新增分区

alter TABLE `t_user` add PARTITION( PARTITION p20180629 VALUES LESS THAN (20180630) ENGINE = InnoDB );

删除分区

alter table `test1` drop PARTITION p20180629;

查询分区

SELECT * from t_user PARTITION (p1)

扫描分区,判断如何使用

explain partitions select * from t_user;
最新回复(0)