[英]How to DROP Sub Partition in specific Partition in Mysql?
我已經在表中創建了分區和子分區。 我的分區如下:
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
)
)
現在,我想使用下面的Alter Query刪除一些分區:
alter table my_records drop partition 30_04;
它給了我以下錯誤:
錯誤1507(HY000):刪除分區列表中的錯誤
刪除子分區的語法是什么。 我不想使用“重組語法”。
讓我指出您的分區+子分區設計可能沒有用,而不是解決您的特定問題。
BY RANGE ( MONTH(...) )
不提供任何性能。 此外,如果您有日期范圍,則可能會選擇所有分區。 BY HASH (...)
不提供任何性能。 而且,范圍將選擇所有子分區。 請解釋一下你想達到的目標。 您可能有一些我尚未發現的新穎的分區好處。
考慮一個不帶 SUBPARTITIONs
的簡單PARTITION BY RANGE (TO_DAYS(...))
。 它的主要優勢在於DROPping
最舊的分區(與緩慢的DELETE
相對)。 它不正常提供加速SELECTs
。
更多討論 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.