数据库教程:MySql数据分区操作之新增分区操作分享

如果想在已经建好的表上进行分区,如果使用alter添加分区的话,mysql会提示错误:
代码如下:
ERROR1505<HY000>Partitionmanagementonanotpartitionedtableisnotpossible
正确的方法是新建一个具有分区的表,结构一致,然后用insertinto分区表select*from原始表;

测试创建分区表文件

代码如下:
CREATETABLEtr(idINT,nameVARCHAR(50),purchasedDATE)
PARTITIONBYRANGE(YEAR(purchased))
(
   PARTITIONp0VALUESLESSTHAN(1990),
   PARTITIONp1VALUESLESSTHAN(1995),
   PARTITIONp2VALUESLESSTHAN(2000),
   PARTITIONp3VALUESLESSTHAN(2005)
);
插入测试数据

代码如下:
INSERTINTOtrVALUES
(1,’deskorganiser’,’2003-10-15′),
(2,’CDplayer’,’1993-11-05′),
(3,’TVset’,’1996-03-10′),
(4,’bookcase’,’1982-01-10′),
(5,’exercisebike’,’2004-05-09′),
(6,’sofa’,’1987-06-05′),
(7,’popcornmaker’,’2001-11-22′),
(8,’aquarium’,’1992-08-04′),
(9,’studydesk’,’1984-09-16′),
(10,’lavalamp’,’1998-12-25′);
查询P2中的数据

代码如下:
select*fromtrwherepurchasedbetween’1995-01-01′and’2004-12-31′;
如果删除P2,在删除P2分区的同时,也会将其下的所有数据删除

代码如下:
altertabletrdroppartitionp2;
showcreatetabletr;
CREATETABLE`tr`(
 `id`int(11)DEFAULTNULL,
 `name`varchar(50)DEFAULTNULL,
 `purchased`dateDEFAULTNULL
)ENGINE=MyISAMDEFAULTCHARSET=utf8
/*!50100PARTITIONBYRANGE(YEAR(purchased))
(PARTITIONp0VALUESLESSTHAN(1990)ENGINE=MyISAM,
 PARTITIONp1VALUESLESSTHAN(1995)ENGINE=MyISAM,
 PARTITIONp3VALUESLESSTHAN(2005)ENGINE=MyISAM)*/
 
再次插入数据时,会将原P2的数据插入至P3中

代码如下:
INSERTINTOtrVALUES(11,’pencilholder’,’1995-07-12′);
ALTERTABLEtrDROPPARTITIONp3;
SELECT*FROMtrWHEREpurchased BETWEEN’1995-01-01′AND’2004-12-31′;
创建一个新的测试表

代码如下:
CREATETABLEmembers(
   idINT,
   fnameVARCHAR(25),
   lnameVARCHAR(25),
   dobDATE
)
PARTITIONBYRANGE(YEAR(dob))(
   PARTITIONp0VALUESLESSTHAN(1970),
   PARTITIONp1VALUESLESSTHAN(1980),
   PARTITIONp2VALUESLESSTHAN(1990)
);
直接用altertabletablenameaddpartition方式再最后面添加分区

代码如下:
ALTERTABLEmembersADDPARTITION(PARTITIONp3VALUESLESSTHAN(2000));
代码如下:
ALTERTABLEmembersreorganizepartitionp0into(
   partitionm0valueslessthan(1960),
   partitionm1valueslessthan(1970)
);
showcreatetablemembers;
CREATETABLE`members`(
 `id`int(11)DEFAULTNULL,
 `fname`varchar(25)DEFAULTNULL,
 `lname`varchar(25)DEFAULTNULL,
 `dob`dateDEFAULTNULL
)ENGINE=MyISAMDEFAULTCHARSET=utf8
/*!50100PARTITIONBYRANGE(YEAR(dob))
(PARTITIONm0VALUESLESSTHAN(1960)ENGINE=MyISAM,
 PARTITIONm1VALUESLESSTHAN(1970)ENGINE=MyISAM,
 PARTITIONp1VALUESLESSTHAN(1980)ENGINE=MyISAM,
 PARTITIONp2VALUESLESSTHAN(1990)ENGINE=MyISAM,
 PARTITIONp3VALUESLESSTHAN(2000)ENGINE=MyISAM)*/
 
使用REORGANIZEPARTITION进行数据的合并与拆分,数据是没有丢失的。
(详细出处参考://www.jb51.net/article/42544.htm)
如果用此方式在之前添加会报错,只能用另一种合并拆分分区的方式操作。

您可能感兴趣的文章:创建mysql表分区的方法mysql使用教程之分区表的使用方法(删除分区表)MySQL的表分区详解mysql的分区技术详细介绍MySQL5.5range分区增加删除处理的方法示例

标签: 操作 数据

mysql的分区技术详细介绍

深入研究mysql中的varchar和limit(容易被忽略的知识)

上述就是数据库技术:MySql数据分区操作之新增分区操作分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/911831.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐