J'ai une table comme:
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);
Pas exactement comme ci-dessus mais similaire à cela ....
Supposons maintenant que ma table comporte 200 000 lignes et que je souhaite maintenant supprimer les partitions de la table et les réorganiser conformément aux exigences sans valeur maximale.
Quelqu'un peut-il m'aider à réorganiser la partition sans perdre de données ou de table et la recréer?
ALTER TABLE tbl REMOVE PARTITIONING;
Vous pouvez réorganiser la partition p0
en utilisant le ALTER TABLE .. REORGANIZE PARTITION
commande.
http://dev.mysql.com/doc/refman/5.5/en/partitioning-management-range-list.html
Si vous avez l'intention de modifier le partitionnement d'une table sans perdre de données, utilisez ALTER TABLE ... REORGANIZE PARTITION
ALTER TABLE registrations
REORGANIZE PARTITION p0 INTO (
PARTITION p0 VALUES LESS THAN (10000),
PARTITION p0 VALUES LESS THAN (20000)
);
Notez que cela n'aura de sens que si vous créez réellement plusieurs partitions, par exemple.
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
);
Jetez un oeil à partitionnement RANGE dans MySQL
Si votre partition p2
devient trop grand, vous pouvez le diviser de la même manière.
Si vous souhaitez réorganiser les données tout en conservant les partitions,
vous pouvez consulter les clauses REORGANIZE PARTITION et COALESCE PARTITION de ALTER TABLE
commander.
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
Réorganiser les partitions ne nécessite pas de supprimer toutes les partitions existantes. Vous pouvez spécifier le nouveau partitionnement dans le ALTER TABLE
directement la syntaxe, et aucune donnée ne sera perdue.
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. Testé avec MySQL 5.7.11