你是不是暗恋我,那就给我发个消息呀,让我知道o(∩∩)o
分类: Mysql/postgreSQL
2014-06-19 14:23:03
mysql手册:http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html#partitioning-overview
ALTER TABLE tt ADD PARTITION (PARTITION np VALUES IN (4, 8));
ALTER TABLE tt REORGANIZE PARTITION p1,np INTO (
PARTITION p1 VALUES IN (6, 18),
PARTITION np VALUES in (4, 8, 12)
);
当使用“ALTER TABLE ... REORGANIZE PARTITION”来对已经按照RANGE和LIST分区表进行重新分区时,下面是一些要记住的关键点:
· 用来确定新分区模式的PARTITION子句使用与用在CREATE TABLE中确定分区模式的PARTITION子句相同的规则。
最重要的是,应该记住:新分区模式不能有任何重叠的区间(适用于按照RANGE分区的表)或值集合(适用于重新组织按照LIST分区的表)。
· partition_definitions 列表中分区的合集应该与在partition_list 中命名分区的合集占有相同的区间或值集合。
例如,在本节中用作例子的成员表中,分区p1和p2总共覆盖了1980到1999的这些年。因此,对这两个分区的重新组织都应该覆盖相同范围的年份。
· 对于按照RANGE分区的表,只能重新组织相邻的分区;不能跳过RANGE分区。
例如,不能使用以“ALTER TABLE members REORGANIZE PARTITION p0,p2 INTO ...”开头的语句,来重新组织本节中用作例子的成员表。因为,p0覆盖了1970年以前的年份,而p2覆盖了从1990到1999(包括1990和1999)之间的年份,因而这两个分区不是相邻的分区。
· 不能使用REORGANIZE PARTITION来改变表的分区类型;也就是说,例如,不能把RANGE分区变为HASH分区,反之亦然。也不能使用该命令来改变分区表达式或列。如果想在不删除和重建表的条件下实现这两个任务,可以使用“ALTER TABLE ... PARTITION BY ....”,例如:
· ALTER TABLE members
· PARTITION BY HASH(YEAR(dob))
· PARTITIONS 8;