版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23864697/article/details/88292062
一 分区表是什么?
CREATE TABLE `t` (
`ftime` datetime NOT NULL,
`c` int(11) DEFAULT NULL,
KEY (`ftime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
PARTITION BY RANGE (YEAR(ftime))
(PARTITION p_2017 VALUES LESS THAN (2017) ENGINE = InnoDB,
PARTITION p_2018 VALUES LESS THAN (2018) ENGINE = InnoDB,
PARTITION p_2019 VALUES LESS THAN (2019) ENGINE = InnoDB,
PARTITION p_others VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
insert into t values('2017-4-1',1),('2018-4-1',1);
对于引擎层来说,是4个表,对于Server层来说,是一个表
二 分区表的引擎层行为
手工分表和分区表的区别在于Server层,分区表每次第一次访问分区表的时候,会每个分区都访问一遍
三 分区表的Server层行为
当作一张表
四 分区表的应用场景
如果一项业务跑的时间足够长,删除某个时间的数据的时候 alter table t drop partition 速度快,对系统影响小