mysql表分区实验总结
分区管理--测试总结:删除分区:
ALTER TABLE tablename REMOVE PARTITIONING ; --删除分区定义,所有数据集中到一个表,数据不丢失
ALTER TABLE bc DROP PARTITION p1; --删除分区的同时会删除分区中的数据
修改分区:
ALTER TABLE nb PARTITION BY HASH(id) PARTITIONS 2;--Hash分区重新定义为两个,并会重新分配数据
合并分区
ALTER TABLEbcREORGANIZEPARTITION p1,p0 INTO ( PARTITION p6 VALUES IN (10,20,30,40));--将BC表中的p0,p1分区合并到p6分区,并且p0,p1的
值必须包含在新的分区内,否则不在新区
中的数据会丢失;
ALTER TABLE aREORGANIZEPARTITION p0,p1,p2 INTO (PARTITION p0 VALUES LESS THAN (500),PARTITION p1 VALUES LESS THAN maxvalue);--重定义分区结构:将Range分区p1,p2合并到p0分区,由于原p2分区是maxvalue值,所以还得同时增加一个新的maxvalue分区,否则报错。
拆分分区:
添加分区:
未有分区的情况下:
ALTER TABLE nb PARTITION BY HASH(id) PARTITIONS 2; --用id 列给表分两个hash分区;如果有unique键,要先删除.
ALTER TABLE aPARTITION BY RANGE(id)( --a 表无分区.
PARTITION p0VALUES LESS THAN (1000),
PARTITION p1VALUESLESS THAN (2000),
PARTITIONp2VALUES LESS THANmaxvalue)
--------------------------------------------------------------------
ALTER TABLE bcPARTITION BY LIST(par_no) (PARTITION p1 ----为未定义分区表的BC表添加两个list分区;
VALUES IN (10,20,30),PARTITION p2 VALUES IN (40,50,60,70,80));
已有分区的情况下:
合并分区:
ALTER TABLE abcREORGANIZEPARTITIONp2 INTO (
PARTITION p2 VALUES LESS THAN (6000),PARTITION p3 VALUES LESS THAN maxvalue); --重新定义Range分区p2,并新加一个p3分区,p2分区的值不能小于现有的最大值,且须新境一个包含最大值(Maxvalue)的新分区,否则报错
ALTER TABLE bcADD PARTITION(PARTITION p3 VALUES IN (20,30));--添加一个list分区
ALTER TABLE nb ADD PARTITION PARTITIONS 2;--(Hash分区),新加后现有分区里的数据会平滑分摊到新分区,myisam引擎在上面的查询语句中可以体现出来,innodb引擎则计数信息丢失,从0开始重新计数,但表中数据变不会丢失.
页:
[1]