MySQL在线分区

业务查询慢,需要对表进行分区,当前MySQL未开启归档,经调研决定采用pt-osc在线分区,pt-osc在线DDL不需要归档

推荐下载网址,比官网方便很多
https://mirrors.tuna.tsinghua.edu.cn/percona/tools/yum/release/7/RPMS/x86_64/

创建测试表,插入数据

use test;
create table pttest(id int,namechar(30));
alter table `pttest` add primary key ( `id` );
insert into pttest(id,name) values (1,'name1');
insert into pttest(id,name) values (10,'name1');
insert into pttest(id,name) values (20,'name1');
insert into pttest(id,name) values (30,'name1');
insert into pttest(id,name) values (40,'name1');
insert into pttest(id,name) values (50,'name1');

dry-run不会真实执行

pt-online-schema-change  D=test,t=pttest -uroot -proot  --alter '
partition by range(`id`)
(
PARTITION p01 VALUES LESS THAN (10),
PARTITION p02 VALUES LESS THAN (20),
PARTITION p04 VALUES LESS THAN (30),
PARTITION p05 VALUES LESS THAN (40),
PARTITION p06 VALUES LESS THAN MAXVALUE 
);' --dry-run

执行分区操作

pt-online-schema-change  D=test,t=pttest -uroot -proot  --alter '
partition by range(`id`)
(
PARTITION p01 VALUES LESS THAN (10),
PARTITION p02 VALUES LESS THAN (20),
PARTITION p04 VALUES LESS THAN (30),
PARTITION p05 VALUES LESS THAN (40),
PARTITION p06 VALUES LESS THAN MAXVALUE 
);' --excute

查看分区情况

use test;
select
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from information_schema.partitions where
table_schema = schema()
and table_name='pttest ';

MySQL5.6版本开始支持按分区查询,可分别查询分区行数

select count(*) from pttest partition (p01) ;

300GB的表用了24小时

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值