如果想在已经建好的表上进行分区,如果使用alter添加分区的话,mysql会提示错误:

复制代码 代码如下:

ERROR 1505 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进行数据的合并与拆分,数据是没有丢失的。

(详细出处参考://www.jb51.net/article/42544.htm)

如果用此方式在之前添加会报错,只能用另一种合并拆分分区的方式操作。

mysql 增加分区_MySql数据分区操作之新增分区操作相关推荐

  1. mysql 增加分区_mysql在原有表的基础上添加分区

    我们现在有一张表,tb_member_login_logs 用户登录日志表,但数据量太大,需要分区,建议新增一个days字段,int类型,值为 Ymd. ALTER TABLE `tb_member_ ...

  2. maxvalue mysql自动分区_mysql的partition分区

    前言:当一个表里面存储的数据特别多的时候,比如单个.myd数据都已经达到10G了的话,必然导致读取的效率很低,这个时候我们可以采用把数据分到几张表里面来解决问题. 方式一:通过业务逻辑根据数据的大小通 ...

  3. mysql 查看 分区_Mysql表分区状态查询

    一.查询mysql表是否为分区表:可以查看表具有哪几个分区.分区的方法.分区中数据的记录数等信息 SELECT PARTITION_NAME,PARTITION_METHOD,PARTITION_EX ...

  4. mysql横向分区_MySQL 横向表分区之RANGE分区小结

    MySQL 横向表分区之RANGE分区小结 by:授客 QQ:1033553122 目录 简介 mysql表分区--RANGE分区,属于横向分区.举例说,假如有100条数据,分成十份,前10条数据放到 ...

  5. mysql decode语句_mysql数据灾难恢复方案

    数据库备份:将数据库中存在的现有数据,进行存放成为副本数据,可以解决数据容灾,提高系统的高可用性和灾难恢复性,数据崩溃时,以最小代价重新恢复数据.数据备份的分类: 物理备份:指对数据库操作系统的物理文 ...

  6. mysql动态分区_MySQL动态创建分区

    按日期分区的数据表,我们希望每年.每个月甚至每天动态创建一个分区,这种情况就需要用事件和存储过程来实现动态添加分区,下面的存储过程是按年分区增加当年分区的过程: BEGIN #Routine body ...

  7. mysql 字符串分区_Mysql分区表的原理和优缺点

    分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表 ...

  8. mysql 水平分区_MySQL水平分区,垂直分区

    坚信的物理设计在对高级数据库的性能影响上远比其他因素重要.给大家说一下经过专家对Oracle的研究,他们解释了为什么拙劣的物理设计是数据库停机(无论是有计划的还是没计划的)背后的主要原因.但在这点上俺 ...

  9. mysql的局限_Mysql数据分区局限性大总结

    对Mysql分区表的局限性做了一些总结,因为个人能力以及测试环境的原因,有可能有错误的地方,还请大家看到能及时指出,当然有兴趣的朋友可以去官方网站 查阅.供以后参考用: 本文测试的版本 mysql&g ...

  10. maxvalue mysql自动分区_mysql 表分区按照数据量自动分区+定时器

    DELIMITER $$ DROP PROCEDURE IF EXISTS `set_partition`$$ CREATE  PROCEDURE `set_partition`(tableName ...

最新文章

  1. F-子序列(组合数,打表,扩展欧拉,容斥)
  2. java jdk win10安装_Java 安装 JDK WIN10
  3. ReactJS学习 相关网站
  4. 精简SQL分页语句---ROW_NUMBER
  5. python django mysql web页面多级联动_Python Web实战:Python+Django+MySQL实现基于Web版的增删改查...
  6. 【AD】PCB设计知识整理(持续更新)
  7. Linux下软件的安装与卸载
  8. 如何动态设置控件的宽高度?
  9. 随机森林 Random Forest
  10. 美国visa虚拟信用卡
  11. matlab cplex使用
  12. 用PDF编辑器如何为PDF文件添加水印
  13. 智慧养殖系统方案云平台功能
  14. Cityscapes数据集介绍
  15. TI最新CC2640R2L与CC2640、CC2640R2F有何区别?
  16. DSP TMS320C5509A 控制DDS AD9854芯片进行PSK相位调制
  17. 关于计算机领域的各种学习交流网站
  18. 如何看待陈皓在微博上对闭源和开源软件的评论?
  19. 【51nod P3121】小陶与杠铃片【树状数组】
  20. '用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联(收藏)

热门文章

  1. c语言身高和标准体重,c语言4-15 输出标准身高体重对照表
  2. Python列表(list)练习题
  3. 读书202101『股票大作手回忆录』
  4. 编写矩阵运算程序(C语言)
  5. 远程拨号换IP的方法
  6. 抖音返利分销模式及代理系统开发
  7. 有哪些免费的软件资源分享网站,软件资源网站大全导航
  8. python订单详细教程-python实现京东订单推送到测试环境,提供便利操作示例
  9. win10 python安装以及编辑器pycharm安装
  10. GridWorld实训总结报告