zoukankan      html  css  js  c++  java
  • MySQL对数据表已有表进行分区表

    原文:https://blog.51cto.com/13675040/2114580

    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多一点数据),测试下,删除原来的表。

    测试可以正常使用,观察几天天。。

  • 相关阅读:
    JavaScript 浮点数处理
    从输入URL到浏览器显示页面发生了什么
    hadoop 编译任意版本的eclipse 插件
    Stm32F103面向对象编程之GPIO
    flume 1.7 安装与使用
    HIVE分组排序问题
    MapReduce实现共同朋友问题
    hadoop项目实战--ETL--(三)实现mysql表到HIVE表的全量导入与增量导入
    hadoop项目实战--ETL--(二)实现自动向mysql中添加数据
    hadoop项目实战--ETL--(一)项目分析
  • 原文地址:https://www.cnblogs.com/shihaiming/p/11269420.html
Copyright © 2011-2022 走看看