MySQL对数据表已有表进行分区表的实现方法是什么
本篇内容介绍了“MySQL对数据表已有表进行分区表的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
操作方式
@1 可以使用ALTER TABLE来进行更改表为分区表,这个操作会创建一个分区表,然后自动进行数据copy然后删除原表,
猜测服务器资源消耗比较大。
类似操作
ALTER TABLE tbl_rtdata PARTITION BY RANGE (Month(fld_date))( PARTITION p_Apr VALUES LESS THAN (TO_DAYS('2012-05-01')),PARTITION p_May VALUES LESS THAN (TO_DAYS('2012-06-01')), PARTITION p_Dec VALUES LESS THAN MAXVALUE );
@2 新建一个和原来表一样的分区表,然后把数据从原表导出,接着倒入新表。
(原来的表主键只有id,而我的分区字段是 stsdate, 这里主键要修改为 id,stsdate 联合主键,分区表要求分区字段要是主键或者是主键的一部分)
操作过程
采用第二种方案。先创建分区表,然后导出原表数据,新表名称改为原表名,然后插入,最后建立普通索引。
建立分区表
CREATE TABLE `apdailysts_p` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ap_id` INT(11) NOT NULL, `mac` VARCHAR(17) NOT NULL, `liveinfo` LONGTEXT NOT NULL, `livetime` INT(11) NOT NULL, `stsdate` DATE NOT NULL, `lastmodified` DATETIME NOT NULL, PRIMARY KEY (`id`, `stsdate`)) PARTITION BY RANGE COLUMNS(stsdate) ( PARTITION p0 VALUES LESS THAN ('2016-06-01'), PARTITION p1 VALUES LESS THAN ('2016-07-01'), PARTITION p2 VALUES LESS THAN ('2016-08-01'), PARTITION p3 VALUES LESS THAN ('2016-09-01'), PARTITION p4 VALUES LESS THAN ('2016-10-01'), PARTITION p5 VALUES LESS THAN ('2016-11-01'), PARTITION p6 VALUES LESS THAN ('2016-12-01'), PARTITION p7 VALUES LESS THAN ('2017-01-01'), PARTITION p8 VALUES LESS THAN ('2017-02-01'), PARTITION p9 VALUES LESS THAN ('2017-03-01'), PARTITION p10 VALUES LESS THAN ('2017-05-01'), PARTITION p11 VALUES LESS THAN ('2017-06-01'), PARTITION p12 VALUES LESS THAN ('2017-07-01'), PARTITION p13 VALUES LESS THAN ('2017-08-01'), PARTITION p14 VALUES LESS THAN ('2017-09-01'), PARTITION p15 VALUES LESS THAN MAXVALUE);
导出数据
mysqldump -u dbname -p --no-create-info dbname apdailysts > apdailysts.sql
修改表名,导入数据(10分钟就导入完了,200w, 8g多一点数据),测试下ok,删除原来的表。
测试可以正常使用,收工,观察2天。。
– 10.16
通过这两天的观察,页面的查询速度从打不开到基本可以秒开的速度了,这个优化是成立的。
“MySQL对数据表已有表进行分区表的实现方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341