2016-06-29 16 views
0

テーブルにパーティションとサブパーティションを作成しました。私のパーティションは以下のようなものです: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 table my_records drop partition 30_04; 

それは私に次のエラー与える:

をERROR 1507(HY000):DROPへのパーティション一覧のエラー

サブパーティションを削除する構文は何ですか?私は構文の再構成を使いたくない。

答えて

1

あなたの特定の問題に取り組むのではなく、あなたのパーティションとサブパーティションの設計がおそらく役に立たないことを指摘しておきます。

  • BY RANGE (MONTH(...))はパフォーマンスを提供しません。さらに、期間がある場合は、すべてのパーティションが選択されます。
  • BY HASH (...)はパフォーマンスを提供しません。そして、範囲もすべてのサブパーティションを選択します。

を解説してください。を試してください。私がまだ発見していないパーティション化のいくつかの新規の利点がある可能性があります。

なしSUBPARTITIONsと簡単に考えてみましょう。主な利点は、遅いDELETEとは対照的に、最も古いパーティションのDROPpingです。 ではないは、通常のSELECTsのスピードアップを提供します。

More discussion

関連する問題