今天延续昨天的内容,继续介绍表分区类型~明天呢我们就将资料表分区的流程实际用到实务上使用,达到每天自行清除旧资料与新建後续分区的作业。
范例表结构:
CREATE TABLE `act` (
`actives_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '活动ID',
`status` bigint(20) DEFAULT NULL COMMENT '活动状态 0(下架) 1(上架) 2(准备中)',
`start_time` int(11) unsigned NOT NULL,
`end_time` int(11) unsigned NOT NULL,
`platform_id` bigint(20) DEFAULT NULL,
`updated_at` int(11) unsigned NOT NULL,
`created_at` int(11) unsigned NOT NULL,
PRIMARY KEY (`actives_id`)
);
hash
(1.) 将资料使用hash分区分成5个partition。
ALTER TABLE act
PARTITION BY HASH (actives_id)
PARTITIONS 5;
(2.) 一次插入10笔资料,看数据分布状态。
INSERT INTO `act` ( `status`, `start_time`, `end_time`, `platform_id`, `updated_at`, `created_at`) VALUES ( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '5', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200');
key
(1.) 将资料使用key分区分成5个partition。
ALTER TABLE act
PARTITION BY KEY (actives_id)
PARTITIONS 5;
ps. 有PK或unique key的状况下分区栏位可不指定~
ALTER TABLE act
PARTITION BY KEY ()
PARTITIONS 5;
sub
(1.) 使用actives_id进行sub分区
ALTER TABLE act
PARTITION BY RANGE(actives_id)
SUBPARTITION BY KEY (actives_id)
SUBPARTITIONS 3 (
PARTITION p0 VALUES LESS THAN (5),
PARTITION p1 VALUES LESS THAN (10),
PARTITION p2 VALUES LESS THAN (15),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
(2.) 插入10笔数据
INSERT INTO `act` ( `status`, `start_time`, `end_time`, `platform_id`, `updated_at`, `created_at`) VALUES ( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '0', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '1', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200'),( '5', '1611504000', '1632931200', '10868213102191', '1632499200', '1632499200');
数据分布状态可以看到,在我们设定的每个分区下又个别拆分成3个。 (4*3 = 12个分区)
查询其中某一个分区的方式,以上图标示的那笔p2纪录来说~
mysql> SELECT * FROM act PARTITION (p2sp0);
管理分区的指令:
(现有表结构)
CREATE TABLE `act` (
`actives_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`status` bigint(20) DEFAULT NULL COMMENT ' 0() 1() 2()',
`start_time` int(11) unsigned NOT NULL,
`end_time` int(11) unsigned NOT NULL,
`platform_id` bigint(20) DEFAULT NULL,
`updated_at` int(11) unsigned NOT NULL,
`created_at` int(11) unsigned NOT NULL,
PRIMARY KEY (`actives_id`)
)
PARTITION BY RANGE (actives_id)(
PARTITION p0 VALUES LESS THAN (5),
PARTITION p1 VALUES LESS THAN (10),
PARTITION p2 VALUES LESS THAN (15),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
(没有) 设定MAXVALUE分区的状况下直接新增
ps.注意只能根据最後一个分区去做往後新增动作!
ALTER TABLE act ADD PARTITION (PARTITION p3 VALUES LESS THAN(20));
(有) 设定MAXVALUE分区的状况下重组拆分分区
ALTER TABLE act REORGANIZE PARTITION pmax INTO (
PARTITION p3 VALUES LESS THAN(20),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
补充: 如果要合并分区
ALTER TABLE act REORGANIZE PARTITION p3,pmax INTO (
PARTITION pmax VALUES LESS THAN MAXVALUE
);
>>: [NestJS 带你飞!] DAY18 - Lifecycle Hooks
亲爱的,帮忙去超市买 1 颗苹果回来,如果他们有鸡蛋的话,买 6 颗。 Simple logic p...
Ok接续昨天的进度,先新增一张工作表。 名称为「各类型app数量/占比树状图」,我们选择「F1」、「...
Bootstrap已是目前全球被大量网页开发者使用的一个网页UI框架了,其特色在於使用简单,开发快速...
今天继续来谈论静态爬虫,昨天都在讲解文字,今天来讲讲图片的部分。常常看到一个网页中有很多漂亮的图片,...
MAP() 从旧的变数 到新の变数 利用P5.js map 去做你的变数的调整 并且 map(val...