簡體   English   中英

如何在MySQL中的特定分區中刪除子分區?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM