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的join buffer原理
Apr 29 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
为什么mysql字段要使用NOT NULL
May 13 MySQL
MySQL 视图(View)原理解析
May 19 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MySQL基础快速入门知识总结(附思维导图)
Sep 25 MySQL
SQL注入详解及防范方法
Dec 06 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 MySQL
MySQL transaction事务安全示例讲解
Jun 21 MySQL
数据设计之权限的实现
Aug 05 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 IP转换整形(ip2long)的详解
2013/06/06 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
用js解决数字不能换行问题
2010/08/10 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
python实现词法分析器
2019/01/31 Python
Django REST framwork的权限验证实例
2020/04/02 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
UNIX文件系统分类
2014/11/11 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
简历中求职的个人自我评价
2013/12/03 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
自荐信的格式
2014/03/10 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
爱心募捐通知范文
2015/04/27 职场文书
2015年暑假工作总结
2015/07/13 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
2022年显卡天梯图(6月更新)
2022/06/17 数码科技