14

Mam tabeli jak:jak upuścić partycję bez upuszczania danych w MySQL?

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); 

Nie dokładnie tak jak powyżej, ale podobny do tego ....

Załóżmy teraz, że moja tabela ma 200000 wierszy i teraz chcę usunąć partycje na stole zreorganizuj je zgodnie z wymogiem bez wartości MAX VALUE.

Czy ktoś może mi pomóc zmienić kolejność partycji bez upuszczania danych lub upuszczania stołu i ponownego tworzenia?

Odpowiedz

7

można reorganizować partycję p0 pomocą polecenia ALTER TABLE .. REORGANIZE PARTITION.

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

Jeśli zamierzasz zmienić partycjonowanie tabeli bez utraty danych, należy użyć instrukcji ALTER TABLE ... reorganizować partycję

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

Zauważ, że to nie ma sensu, dopóki faktycznie tworzysz kilka partycji np

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 
); 

Wystarczy popatrzeć na RANGE partitioning in MySQL

Jeśli partycja p2 staje się zbyt duży, można go w ten sam sposób podzielić.

60
ALTER TABLE tbl REMOVE PARTITIONING; 
+0

To jest poprawna odpowiedź, uprzejmie oznaczyć to. –

+0

To powinna być poprawna odpowiedź na pytanie. – Sugan

1

Przestawić przegrupowanie partycji nie wymaga usunięcia wszystkich istniejących partycji. Możesz określić nową partycję bezpośrednio w składni ALTER TABLE i żadne dane nie zostaną utracone.

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. Testowane z MySQL 5.7.11

Powiązane problemy