Lee*_*ong 9 mysql partitioning
我有以下示例表...
mysql> CREATE TABLE part_date3
-> ( c1 int default NULL,
-> c2 varchar(30) default NULL,
-> c3 date default NULL) engine=myisam
-> partition by range (to_days(c3))
-> (PARTITION p0 VALUES LESS THAN (to_days('1995-01-01')),
-> PARTITION p1 VALUES LESS THAN (to_days('1996-01-01')) ,
-> PARTITION p2 VALUES LESS THAN (to_days('1997-01-01')) ,
-> PARTITION p3 VALUES LESS THAN (to_days('1998-01-01')) ,
-> PARTITION p4 VALUES LESS THAN (to_days('1999-01-01')) ,
-> PARTITION p5 VALUES LESS THAN (to_days('2000-01-01')) ,
-> PARTITION p6 VALUES LESS THAN (to_days('2001-01-01')) ,
-> PARTITION p7 VALUES LESS THAN (to_days('2002-01-01')) ,
-> PARTITION p8 VALUES LESS THAN (to_days('2003-01-01')) ,
-> PARTITION p9 VALUES LESS THAN (to_days('2004-01-01')) ,
-> PARTITION p10 VALUES LESS THAN (to_days('2010-01-01')),
-> PARTITION p11 VALUES LESS THAN MAXVALUE );
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
假设这里充满了数据,我想在p11中插入2011分区,然后使p12 maxvalue有一种有效的方法来实现这一点,而无需转储和重新加载整个表?
回答你确切的问题
我想在p11插入2011分区,然后制作p12 maxvalue
这是查询
ALTER TABLE part_date3 REORGANIZE PARTITION p11 INTO (
PARTITION p11 VALUES LESS THAN (TO_DAYS('2011-01-01')),
PARTITION p12 VALUES LESS THAN MAXVALUE
);
Run Code Online (Sandbox Code Playgroud)
您需要删除 MAXVALUE 分区,添加新分区,然后再次添加新的 MAXVALUE 分区。这是一个快速操作,您不会丢失除 MAXVALUE 分区之外的任何分区中的数据。
如果您想将数据保留在 MAXVALUE 分区中,请查看 ALTER TABLE 的 REORGAINZE PARTITION 和 COALESCE PARTITION 子句 http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
我有同样的问题。我删除了 MAXVALUE 分区,添加了新分区,但没有再次添加 MAXVALUE 分区。就我而言,应用程序将来永远不会插入任何数据过多的记录,以至于需要 MAXVALUE 分区。
分区维护与事件配合得很好。请参阅 http://dev.mysql.com/tech-resources/articles/partitioning-event_scheduler.html
归档时间: |
|
查看次数: |
1868 次 |
最近记录: |