MySQL对数据表已有表进行分区表的实现


Posted in MySQL onNovember 01, 2021

对现有的一个表进行创建分区表,并把数据迁移到新表,可以按时间来分区,然后这表不是实时更新,每天有一次插入操作。
时间比较充裕,但是服务器上有其他应用,使用较小资源为主要方式。

操作方式

@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对数据表已有表进行分区表的实现的文章就介绍到这了,更多相关MySQL 已有表进行分区表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL表的增删改查(基础)
Apr 05 MySQL
MySQL表的增删改查基础教程
Apr 07 MySQL
MySQL之PXC集群搭建的方法步骤
May 25 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
Mysql开启外网访问
May 15 MySQL
mysql分表之后如何平滑上线详解
Nov 01 #MySQL
MySQL8.0升级的踩坑历险记
Nov 01 #MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 #MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
You might like
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
用PHP产生动态的影像图
2006/10/09 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
python Matplotlib模块的使用
2020/09/16 Python
网络安全类面试题
2015/08/01 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
饲料采购员岗位职责
2013/12/19 职场文书
四好少年事迹材料
2014/01/12 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
五四演讲稿范文
2014/09/03 职场文书
大四学生个人总结
2015/02/15 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL