美文网首页
MySQL对数据表已有表进行分区表

MySQL对数据表已有表进行分区表

作者: AI视客 | 来源:发表于2021-09-02 14:01 被阅读0次

操作方式

@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,删除原来的表。

————————————————

版权声明:本文为CSDN博主「orangleliu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/orangleliu/article/details/57088338

相关文章

  • MySQL分区表

    确认mysql是否支持分区表 mysql分区表的特点 创建mysql数据表为hash表 常用mysql分区的类型 ...

  • MySQL对数据表已有表进行分区表

    操作方式 @1 可以使用ALTER TABLE来进行更改表为分区表,这个操作会创建一个分区表,然后自动进行数据co...

  • 《高性能Mysql》- 高级(偏僻)特性

    一、分区表 分区表用于把相关数据放在一起,以分区为单位进行批量删除,检查/修复,备份/恢复等数据操作。当数据表非常...

  • 从0到1学习网络安全 【MySQL基础-MySQL 删除数据表】

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除...

  • mysql分区表测试

    mysql分区表测试 mysql部署情况 使用docker-compose在10.xx.xx.1机器进行部署, 端...

  • MySQL-分区表

    MySQL-分区表 分区表(于MySQL 5.1引入,v 5.5后可以逐步考虑用于生产环境) 是一个独立的逻辑表,...

  • MYSQL-高拓展和高可用

    1.分区表的原理 工作原理 1.对用户而言,分区表是一个独立的逻辑表,但是底层 MYSQL将其分成了多个物理子表,...

  • 5.5MySQL高可扩展和高可用考点

    考官考点分区表的原理分库分表的原理延伸:MySQL的复制原理及负载均衡 工作原理对用户而言,分区表是一个独立的逻辑...

  • 5.5MySQL高可扩展和高可用考点 - 草稿

    考官考点分区表的原理分库分表的原理延伸:MySQL的复制原理及负载均衡 工作原理对用户而言,分区表是一个独立的逻辑...

  • Mysql 分区表

    MySQL分区表支持RANGE,LIST,HASH,KEY,COLUMNS多种分区算法。 分区表的唯一索引和主键索...

网友评论

      本文标题:MySQL对数据表已有表进行分区表

      本文链接:https://www.haomeiwen.com/subject/bgaqwltx.html