2016-06-29 12 views
0

Ich habe Partitionen und Unterpartitionen in meiner Tabelle erstellt. Meine Partitionen sind wie unten:Wie Sub Partition in bestimmten Partition in Mysql fallen?

PARTITION BY RANGE (MONTH(record_date)) 
SUBPARTITION BY HASH (DAY(record_date)) 
(
PARTITION p2012 VALUES LESS THAN (5) 
(
    SUBPARTITION 01_04 ENGINE = InnoDB, 
    SUBPARTITION 02_04 ENGINE = InnoDB, 
    SUBPARTITION 03_04 ENGINE = InnoDB, 
    SUBPARTITION 04_04 ENGINE = InnoDB, 
    SUBPARTITION 05_04 ENGINE = InnoDB, 
    SUBPARTITION 06_04 ENGINE = InnoDB, 
    SUBPARTITION 07_04 ENGINE = InnoDB, 
    SUBPARTITION 08_04 ENGINE = InnoDB, 
    SUBPARTITION 09_04 ENGINE = InnoDB, 
    SUBPARTITION 10_04 ENGINE = InnoDB, 
    SUBPARTITION 11_04 ENGINE = InnoDB, 
    SUBPARTITION 12_04 ENGINE = InnoDB, 
    SUBPARTITION 13_04 ENGINE = InnoDB, 
    SUBPARTITION 14_04 ENGINE = InnoDB, 
    SUBPARTITION 15_04 ENGINE = InnoDB, 
    SUBPARTITION 16_04 ENGINE = InnoDB, 
    SUBPARTITION 17_04 ENGINE = InnoDB, 
    SUBPARTITION 18_04 ENGINE = InnoDB, 
    SUBPARTITION 19_04 ENGINE = InnoDB, 
    SUBPARTITION 20_04 ENGINE = InnoDB, 
    SUBPARTITION 21_04 ENGINE = InnoDB, 
    SUBPARTITION 22_04 ENGINE = InnoDB, 
    SUBPARTITION 23_04 ENGINE = InnoDB, 
    SUBPARTITION 24_04 ENGINE = InnoDB, 
    SUBPARTITION 25_04 ENGINE = InnoDB, 
    SUBPARTITION 26_04 ENGINE = InnoDB, 
    SUBPARTITION 27_04 ENGINE = InnoDB, 
    SUBPARTITION 28_04 ENGINE = InnoDB, 
    SUBPARTITION 29_04 ENGINE = InnoDB, 
    SUBPARTITION 30_04 ENGINE = InnoDB, 
    SUBPARTITION 31_04 ENGINE = InnoDB 
), 
    PARTITION p2013 VALUES LESS THAN (6) 
    (
    SUBPARTITION 01_05 ENGINE = InnoDB, 
    SUBPARTITION 02_05 ENGINE = InnoDB, 
    SUBPARTITION 03_05 ENGINE = InnoDB, 
    SUBPARTITION 04_05 ENGINE = InnoDB, 
    SUBPARTITION 05_05 ENGINE = InnoDB, 
    SUBPARTITION 06_05 ENGINE = InnoDB, 
    SUBPARTITION 07_05 ENGINE = InnoDB, 
    SUBPARTITION 08_05 ENGINE = InnoDB, 
    SUBPARTITION 09_05 ENGINE = InnoDB, 
    SUBPARTITION 10_05 ENGINE = InnoDB, 
    SUBPARTITION 11_05 ENGINE = InnoDB, 
    SUBPARTITION 12_05 ENGINE = InnoDB, 
    SUBPARTITION 13_05 ENGINE = InnoDB, 
    SUBPARTITION 14_05 ENGINE = InnoDB, 
    SUBPARTITION 15_05 ENGINE = InnoDB, 
    SUBPARTITION 16_05 ENGINE = InnoDB, 
    SUBPARTITION 17_05 ENGINE = InnoDB, 
    SUBPARTITION 18_05 ENGINE = InnoDB, 
    SUBPARTITION 19_05 ENGINE = InnoDB, 
    SUBPARTITION 20_05 ENGINE = InnoDB, 
    SUBPARTITION 21_05 ENGINE = InnoDB, 
    SUBPARTITION 22_05 ENGINE = InnoDB, 
    SUBPARTITION 23_05 ENGINE = InnoDB, 
    SUBPARTITION 24_05 ENGINE = InnoDB, 
    SUBPARTITION 25_05 ENGINE = InnoDB, 
    SUBPARTITION 26_05 ENGINE = InnoDB, 
    SUBPARTITION 27_05 ENGINE = InnoDB, 
    SUBPARTITION 28_05 ENGINE = InnoDB, 
    SUBPARTITION 29_05 ENGINE = InnoDB, 
    SUBPARTITION 30_05 ENGINE = InnoDB, 
    SUBPARTITION 31_05 ENGINE = InnoDB 
) 

)

Nun, ich möchte eine Partition löschen, indem unten Alter Abfrage:

alter table my_records drop partition 30_04; 

Es gibt mir folgende Fehlermeldung:

FEHLER 1507 (HY000): Fehler in der Liste der Partitionen zu DROP

Wie lautet die Syntax zum Löschen der Unterpartition? Ich möchte nicht die Syntax reorganisieren verwenden.

Antwort

1

Anstatt Ihr spezifisches Problem anzugehen, lassen Sie mich darauf hinweisen, dass Ihr Partition + Subpartition Design wahrscheinlich nutzlos ist.

  • BY RANGE (MONTH(...)) bietet keine Leistung. Wenn Sie einen Datumsbereich haben, wird er wahrscheinlich alle Partitionen auswählen.
  • BY HASH (...) bietet keine Leistung. Und wiederum würde ein Bereich alle Subpartitionen auswählen.

Bitte erläutern Sie, was Sie sind versuchen zu erreichen. Es ist möglich, dass Sie einen neuen Vorteil der Partitionierung haben, den ich noch nicht entdeckt habe.

Betrachten wir ein einfaches PARTITION BY RANGE (TO_DAYS(...)) mit keinSUBPARTITIONs. Es ist der Hauptvorteil in DROPping die älteste Partition (im Gegensatz zu einer langsamen DELETE). Es tut nicht bieten eine Beschleunigung für normale SELECTs.

More discussion.