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 分组查询的优化方法
May 12 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
JS中数据结构之栈
2019/01/01 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
python使用webdriver爬取微信公众号
2018/08/31 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
幼儿园教师考核制度
2014/02/01 职场文书
人事助理自荐信
2014/02/02 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
高中教师评语大全
2014/04/25 职场文书
优秀大学生自荐信
2014/06/09 职场文书
市场营销毕业求职信
2014/08/07 职场文书
门卫岗位职责
2015/02/09 职场文书
储备店长岗位职责
2015/04/14 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
Java 多线程并发FutureTask
2022/06/28 Java/Android