`
yuelangyc
  • 浏览: 454646 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySql数据分区操作,新增分区

阅读更多
        如果想在已经建好的表上进行分区,如果使用alter添加分区的话,mysql会提示错误:
        ERROR 1505 <HY000> Partition management on a not partitioned table is not possible
        正确的方法是新建一个具有分区的表,结构一致,然后用insert into 分区表 select * from 原始表;

        测试创建分区表文件
CREATE TABLE tr (id INT, name VARCHAR(50), purchased DATE)
PARTITION BY RANGE(YEAR(purchased))
(
    PARTITION p0 VALUES LESS THAN (1990),
    PARTITION p1 VALUES LESS THAN (1995),
    PARTITION p2 VALUES LESS THAN (2000),
    PARTITION p3 VALUES LESS THAN (2005)
);

        插入测试数据
INSERT INTO tr VALUES
(1, 'desk organiser', '2003-10-15'),
(2, 'CD player', '1993-11-05'),
(3, 'TV set', '1996-03-10'),
(4, 'bookcase', '1982-01-10'),
(5, 'exercise bike', '2004-05-09'),
(6, 'sofa', '1987-06-05'),
(7, 'popcorn maker', '2001-11-22'),
(8, 'aquarium', '1992-08-04'),
(9, 'study desk', '1984-09-16'),
(10, 'lava lamp', '1998-12-25');


        查询P2中的数据
select * from tr where purchased between '1995-01-01' and '2004-12-31';


       如果删除P2,在删除P2分区的同时,也会将其下的所有数据删除
alter table tr drop partition p2;

show create table tr;

CREATE TABLE `tr` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `purchased` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (YEAR(purchased))
(PARTITION p0 VALUES LESS THAN (1990) ENGINE = MyISAM,
 PARTITION p1 VALUES LESS THAN (1995) ENGINE = MyISAM,
 PARTITION p3 VALUES LESS THAN (2005) ENGINE = MyISAM) */



        再次插入数据时,会将原P2的数据插入至P3中
INSERT INTO tr VALUES (11, 'pencil holder', '1995-07-12');

ALTER TABLE tr DROP PARTITION p3;

SELECT * FROM tr WHERE purchased  BETWEEN '1995-01-01' AND '2004-12-31';



        创建一个新的测试表
CREATE TABLE members (
    id INT, 
    fname VARCHAR(25),
    lname VARCHAR(25), 
    dob DATE
)
PARTITION BY RANGE(YEAR(dob)) (
    PARTITION p0 VALUES LESS THAN (1970),
    PARTITION p1 VALUES LESS THAN (1980),
    PARTITION p2 VALUES LESS THAN (1990)
);



        直接用alter table tablename add partition 方式再最后面添加分区
ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));



ALTER TABLE members reorganize partition p0 into (
    partition m0 values less than (1960),
    partition m1 values less than (1970)
);

show create table members;

CREATE TABLE `members` (
  `id` int(11) DEFAULT NULL,
  `fname` varchar(25) DEFAULT NULL,
  `lname` varchar(25) DEFAULT NULL,
  `dob` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (YEAR(dob))
(PARTITION m0 VALUES LESS THAN (1960) ENGINE = MyISAM,
 PARTITION m1 VALUES LESS THAN (1970) ENGINE = MyISAM,
 PARTITION p1 VALUES LESS THAN (1980) ENGINE = MyISAM,
 PARTITION p2 VALUES LESS THAN (1990) ENGINE = MyISAM,
 PARTITION p3 VALUES LESS THAN (2000) ENGINE = MyISAM) */



        使用 REORGANIZE PARTITION进行数据的合并与拆分,数据是没有丢失的。
             (详细出处参考:http://www.jb51.net/article/42544.htm)
        如果用此方式在之前添加会报错,只能用另一种合并拆分分区的方式操作。
分享到:
评论
1 楼 csdn_lichao 2015-08-18  
[flash=200,200][flash=200,200][url][img][list]
[*]
引用
[u][i][b][i]dsadsadsad[/i][/b][/i][/u]
[/list][/img][/url][/flash][/flash]
  

相关推荐

    MySql数据分区操作之新增分区操作

    本文主要关注的是如何在MySQL中对已有的表进行新增分区的操作。 首先,当我们想要在已经建立好的非分区表上添加分区时,直接使用`ALTER TABLE`语句会报错,因为MySQL不支持直接在非分区表上进行分区管理。正确的...

    MySQL的表分区详解

    然而,值得注意的是,尽管MySQL分区提供了许多优势,但在实际应用中,需要根据具体业务需求和查询模式来决定是否使用分区,以及如何设计分区策略。在创建分区表后,可以通过调整分区方案来优化常见查询的性能。此外...

    MySQL自动化分区新增数字时间戳类型

    MySQL自动化分区脚本

    MySQL-5.7新增功能全揭秘中文版

    - **新特性简介**:MySQL 5.7 引入了对 JSON 数据类型的原生支持,这包括了一个专门用于存储 JSON 数据的新数据类型以及一系列用于操作 JSON 数据的内置函数。 - **JSON 数据类型**:MySQL 5.7 提供了 `JSON` 类型,...

    SSIS对SQL Server向Mysql数据转发表数据 更新和新增数据

    在这个场景中,我们关注的是如何使用SSIS将SQL Server的数据转移到MySQL数据库中,并进行更新和新增操作。 首先,SSIS的工作流程通常涉及以下几个步骤: 1. **设计数据流任务**:在SSIS项目中,创建一个数据流任务...

    MySQL中表分区技术详细解析

    MySQL 5.1 中新增的分区(Partition)功能就开始增加,优势也越来越明显了: 与单个磁盘或文件系统分区相比,可以存储更多的数据 很容易就能删除不用或者过时的数据 一些查询可以得到极大的优化 涉及到 SUM()/...

    mysql使用教程之分区表的使用方法(删除分区表)

    MySQL分区表是一种高效管理大数据量的存储策略,它允许将一个大表分成多个较小的、更易管理和处理的部分。在本文中,我们将探讨MySQL分区表的使用方法,特别是关于如何新增分区、删除分区以及对分区进行合并和拆分。...

    MySQL 5.7 中文文档

    1. **InnoDB存储引擎**:MySQL 5.7默认的存储引擎是InnoDB,它支持事务处理、行级锁定以及外键约束,这使得InnoDB成为处理并发操作和确保数据完整性的理想选择。5.7版本中,InnoDB在性能方面有所提升,例如更快的...

    mysql8.0 JDBC驱动

    2. **窗口函数**:新增的窗口函数为数据分析和聚合操作提供了更强大的工具,比如`RANK()`, `LEAD()`, `LAG()`, 和 `OVER()`等,使得无需编写复杂的子查询或自连接就能实现高级排序和计算。 3. **JSON支持**:MySQL ...

    MySQL5.6官方文档

    - **分区表支持**:支持对表进行水平分割,便于管理大规模数据集。 - **JSON数据类型支持**:引入了JSON数据类型,允许在数据库中直接存储和操作JSON格式的数据。 - **性能监视器**:提供了性能监视器...

    Linux安装mysql5.7详细步骤

    1. **检查新增磁盘**:使用`fdisk -l`来检查是否有未分区的新磁盘。 2. **分区**:使用`fdisk /dev/sdb`对磁盘进行分区(假设磁盘设备名为/dev/sdb)。 3. **格式化**:格式化新建分区,如`mkfs.ext4 /dev/sdb1`。 4...

    mysql8.0.rar

    8. **更强大的分区功能**:MySQL 8.0扩展了表分区功能,支持更多类型的分区策略,如线性哈希分区,有助于管理大规模数据。 9. **更友好的系统变量和配置**:对系统变量进行了整理和简化,使得配置更加直观和易于...

    MySQL分区表的基本入门教程

    本教程将详细介绍MySQL分区表的基本概念、分区类型、分区命令以及操作注意事项和常见问题。 1. **前言** 在处理大数据量的场景中,分区表能够提升查询效率,因为它允许数据分散在多个物理存储单元上,从而加速数据...

    mysql 5.7 官方文档

    MySQL的特性包括支持事务处理、存储过程、触发器、视图等高级特性,以及复制、分区、集群、存储引擎等多种功能。此外,MySQL还支持多种存储引擎,如InnoDB、MyISAM、Memory、CSV等,每种引擎都有其特定的优势和用途...

    mysql4.0和5.0驱动

    相应的,MySQL 5.0驱动也进行了更新,以支持这些新增功能。在PowerBuilder中,你需要确保使用与目标数据库版本兼容的驱动,这样才能充分利用所有可用特性。 在使用PB进行不同数据库的导入时,选择正确的驱动至关...

    MySQL Community Server 8.0.29(mysql-8.0.29-winx64.zip)

    安装完成后,可以通过命令行或图形界面工具(如 MySQL Workbench)进行数据库管理,包括创建数据库、导入导出数据、执行 SQL 查询等操作。 总之,MySQL Community Server 8.0.29 为 Windows 用户提供了一个强大、...

    mysql数据库5.5

    同时,分区表的维护操作如添加、删除分区也变得更加简便。 四、安全性和审计 MySQL 5.5增强了安全管理,包括更严格的权限控制、加密连接支持(如SSL)以及审计插件,允许管理员跟踪和记录数据库活动,从而提高合规...

Global site tag (gtag.js) - Google Analytics