300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 数据切分Mysql分区表的管理与维护【MySQL】

数据切分Mysql分区表的管理与维护【MySQL】

时间:2022-01-31 06:41:44

相关推荐

数据切分Mysql分区表的管理与维护【MySQL】

数据库|mysql教程

分区表,数据

数据库-mysql教程

Mysql支持4种表的分区,即RANGE与LIST、HASH与KEY,其中RANGE和LIST类似,按一种区间进行分区,HASH与KEY类似,是按照某种算法对字段进行分区。

qq安卓协议机器人源码,vscode改sytle,vtun ubuntu,dll注入tomcat,sqlite3 解密,shopex qq登陆插件,前端框架是怎么回事,爬虫与算法工程师,php微信支付接口,烽火台seo,网站功能模块分析,站长平台网页端,织梦软件公司模板lzw

RANGE与LIST分区管理:

精美笑话网整站源码,vscode vuetur,ubuntu字体锯齿,tomcat PKIX,cmd调用sqlite,阿里云服务器如何建站,js 全屏截图插件,css前端框架排行,java 爬虫使用代理,php全栈工程师培训,SEO的简史,户外拓展网站源码,网页 横向滑动条,bootstrap 扁平化模板,表单提交跳转指定页面跳转,投票管理系统方案论证,微信小程序与微网站lzw

案例:有一个聊天记录表,用户几千左右,已经对表按照用户进行一定粒度的水平分割,现仍然有部分表存储的记录比较多,于是按照下列方式有对表进行了分区,分区的好处是,可以动态改变分区,删除分区后,数据也一同被删除,如聊天记录只保存两年,那么你就可以按照时间进行分区,定期删除两年前的分区,动态创建新的的分区就能做到很好的数据维护。

818美女网源码带采集,vscode 时序图,gitk Ubuntu,tomcat示例页面,sqlite日期格式配置,微信互动游戏营销插件,市场占有最大的前端框架,爬虫服装设计,mac php ini,朔州seo优化目的,手机模板网站模板,公司的网页模版,手机模板素材lzw

分区表创建的语句如下:

DROP TABLE IF EXISTS `msgss`;CREATE TABLE `msgss` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 表主键, `sender` int(10) unsigned NOT NULL COMMENT 发送者ID, `reciver` int(10) unsigned NOT NULL COMMENT 接收者ID, `msg_type` tinyint(3) unsigned NOT NULL COMMENT 消息类型, `msg` varchar(225) NOT NULL COMMENT 消息内容, `atime` int(10) unsigned NOT NULL COMMENT 发送时间, `sub_id` tinyint(3) unsigned NOT NULL COMMENT 部门ID, PRIMARY KEY (`id`,`atime`,`sub_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8/*********分区信息**************/PARTITION BY RANGE (atime) SUBPARTITION BY HASH (sub_id) (PARTITION t0 VALUES LESS THAN(1451577600)(SUBPARTITION s0,SUBPARTITION s1,SUBPARTITION s2,SUBPARTITION s3,SUBPARTITION s4,SUBPARTITION s5),PARTITION t1 VALUES LESS THAN(1483200000)(SUBPARTITION s6,SUBPARTITION s7,SUBPARTITION s8,SUBPARTITION s9,SUBPARTITION s10,SUBPARTITION s11),PARTITION t2 VALUES LESS THAN MAXVALUE(SUBPARTITION s12,SUBPARTITION s13,SUBPARTITION s14,SUBPARTITION s15,SUBPARTITION s16,SUBPARTITION s17));

上述语句创建了三个按照RANGE划分的主分区,每个主分区下面有六个按照HASH划分的子分区。

插入测试数据:

INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH,UNIX_TIMESTAMP(NOW()),1);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 2,UNIX_TIMESTAMP(NOW()),2);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 3,UNIX_TIMESTAMP(NOW()),3);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 10,UNIX_TIMESTAMP(NOW()),10);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 7,UNIX_TIMESTAMP(NOW()),7);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 5,UNIX_TIMESTAMP(NOW()),5);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH,1451577607,1);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 2,1451577609,2);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 3,1451577623,3);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 10,1451577654,10);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 7,1451577687,7);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 5,1451577699,5);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH,1514736056,1);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 2,1514736066,2);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 3,1514736076,3);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 10,1514736086,10);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 7,1514736089,7);INSERT INTO `msgss`(`sender`,`reciver`,`msg_type`,`msg`,`atime`,`sub_id`) VALUES(1,2,0,Hello HASH 5,1514736098,5);

进行分区分析:

EXPLAIN PARTITIONS SELECT * FROM msgss;

可以检测到分区信息如下:

检测分区数据分布:

EXPLAIN PARTITIONS SELECT * FROM msgss WHERE `atime`1451577600 AND `atime`1483200000 AND `atime`1514736000;

结果:第一条语句只扫描了t0的所有子分区,第二条语句只扫描了t1的所有子分区,第三四条分别只扫描了t2的所有子分区,证明表的分区和数据分布成功。

需求:目前已经是,需要将所有的聊天记录删除,但是保留的聊天记录,并且的数据也能正常按照分区进行存储。

实现以上需求,需要两步,第一步删除t0分区,第二步按照新规则重建分区。

删除分区语句:

ALTER TABLE `msgss` DROP PARTITION t0;

重建分区语句:

ALTER TABLE `msgss` PARTITION BY RANGE (atime) SUBPARTITION BY HASH (sub_id) (PARTITION t0 VALUES LESS THAN(1483200000)(SUBPARTITION s0,SUBPARTITION s1,SUBPARTITION s2,SUBPARTITION s3,SUBPARTITION s4,SUBPARTITION s5),PARTITION t1 VALUES LESS THAN(1514736000)(SUBPARTITION s6,SUBPARTITION s7,SUBPARTITION s8,SUBPARTITION s9,SUBPARTITION s10,SUBPARTITION s11),PARTITION t2 VALUES LESS THAN MAXVALUE(SUBPARTITION s12,SUBPARTITION s13,SUBPARTITION s14,SUBPARTITION s15,SUBPARTITION s16,SUBPARTITION s17));

查询发现,的数据全部被删除,剩余的数据被重新分区并分布。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。