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 08 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
MySQL Router的安装部署
Apr 24 MySQL
MySQL 使用事件(Events)完成计划任务
May 24 MySQL
MySQL之PXC集群搭建的方法步骤
May 25 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 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
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
DOM 高级编程
2015/05/06 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
基于require.js的使用(实例讲解)
2017/09/07 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
JS回调函数深入理解
2019/10/16 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python 批量修改/替换数据的实例
2018/07/25 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
对python中的装包与解包实例详解
2019/08/24 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
StubHub德国:购买和出售门票
2017/09/06 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
少先队学雷锋活动总结范文
2014/03/09 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
小学少先队活动总结
2015/05/08 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL