14

私はのようなテーブルを持っている:MySQLでデータを削除せずにパーティションを削除する方法は?

が今私のテーブルには200000個の行を持っており、今、私はテーブルの上にパーティションを削除することを想定して....

create table registrations( 
id int not null auto_increment primary key, 
name varchar(50), 
mobile_number varchar(13)) 
engine=innodb 
partition by range(id) (
partition p0 values less than (10000), 
partition p0 values less than (20000), 
partition p0 values less than max value); 

ない正確に上記のようなそれに類似MAX VALUEを含まない要件に従って再編成してください。

データを破棄したり、テーブルを削除して再作成したりすることなく、パーティションを並べ替えることができますか?

答えて

7

あなたはALTER TABLE .. REORGANIZE PARTITIONコマンドを使用してパーティションp0を再編成することができます。

http://dev.mysql.com/doc/refman/5.5/en/partitioning-management-range-list.html

あなたはALTER TABLEを使用して、データを失うことなく、テーブルのパーティションを変更する場合...これはまで意味をなさないしないことPARTITION

ALTER TABLE registrations 
REORGANIZE PARTITION p0 INTO (
    PARTITION p0 VALUES LESS THAN (10000), 
    PARTITION p0 VALUES LESS THAN (20000) 
); 

注意を再編成あなたは実際にいくつかのパーティションを作成します。あなたのパーティションp2はあなたがそれを同じように分割することができますが大きくなりすぎている場合は

ALTER TABLE registrations 
REORGANIZE PARTITION p0 INTO (
    PARTITION p0 VALUES LESS THAN (10000), 
    PARTITION p1 VALUES LESS THAN (20000), 
    PARTITION p2 VALUES LESS THAN MAXVALUE 
); 

RANGE partitioning in MySQL

を見てください。

60
ALTER TABLE tbl REMOVE PARTITIONING; 
+0

これは間違いなく正しい答えです。 –

+0

これは質問に対する正解でなければなりません。 – Sugan

1

既存のパーティションをすべて削除する必要はありません。 ALTER TABLE構文で新しいパーティショニングを直接指定することができ、データが失われることはありません。

ALTER TABLE registrations 
PARTITION by RANGE(id) (
PARTITION p1 VALUES LESS THAN (10000), 
PARTITION p2 VALUES LESS THAN (20000), 
PARTITION p3 VALUES LESS THAN (30000), 
PARTITION p4 VALUES LESS THAN (40000), 
PARTITION p5 VALUES LESS THAN (MAXVALUE); 

P.S. MySQL 5.7.11でテスト済み

関連する問題