mysqlパーティション管理

リファレンス:https : //www.cnblogs.com/ivictor/p/5025764.html

1. RANGEおよびLISTパーティションを管理する方法

例としてパーティションテーブルを取り上げます。

コードをコピー
CREATE TABLEメンバー(
    id INT、
    fname VARCHAR(25)、
    lname VARCHAR(25)、
    dob DATE 
PARTITION BY RANGE(YEAR(dob))(
    PARTITION p0 VALUES LESS THAN(1970)、
    PARTITION p1 VALUES LESS THAN(1980)、
    PARTITION p2 VALUES LESS THAN(1990)
);
コードをコピー

1.パーティションを削除する

ALTER TABLEメンバーのDROP PARTITION p1;

注:パーティションが削除されると、パーティション内のデータは失われます。それだけでなく、show create table members \ G;コマンドを使用してテーブル作成ステートメントを表示すると、削除されたパーティションに関する情報は表示されません。

         RANGEパーティションの場合、p1パーティションが削除され、データが挿入されたときに、日付が1970〜1980の範囲内にある場合、データは次のパーティション、つまりp2に割り当てられます。

         LISTパーティションの場合、パーティションが削除され、データを挿入するときに、データがこのパーティションに属していると、挿入によってエラーが報告されます。

         パーティションの情報を削除せずにデータを削除するだけの場合は、truncateコマンドを使用できます

ALTER TABLEメンバーTRUNCATE PARTITION p1;

 

2.パーティションを追加します

ALTER TABLEメンバーがパーティションを追加(PARTITION p3の値が(2000)未満)

注意:ADDコマンドを使用してパーティションを追加するには、パーティションリストの最後にのみ追加できます。この例では、1990年以降にのみ追加できます。

もちろん、実際の実稼働環境では、この制限は大きすぎます。たとえば、p0パーティションの前にパーティションを追加したい、間隔が1960である、またはこの時点でADDを使用しても1975パーティションが追加されないこのような要件については、ALTER TABLE ... REORGANIZE PARTITIONコマンドを使用できます。

たとえば、次のとおりです。

ALTER TABLEメンバーはPARTITION p0 INTOを再編成します(
    PARTITION s0 VALUES LESS THAN(1960)、
    PARTITION s1 VALUES LESS THAN(1970)
);

REORGANIZEコマンドは実際には非常に柔軟で、パーティションを分割できるだけでなく、次のようなパーティションのマージにも使用できます。

ALTER TABLEメンバーは、パーティションp0、p1、p2、p3 INTOを再編成します(
    PARTITION m0 VALUES LESS THAN(1980)、
    PARTITION m1 VALUES LESS THAN(2000)
);

注:

1> REORGANIZE PARTITIONコマンドを使用してテーブルのパーティションタイプを変更することはできません。ALTERTABLE ... PARTITION BY ....ステートメントのみを使用できます。次に例を示します。

ALTER TABLEメンバー
    PARTITION BY HASH(YEAR(dob))
    PARTITIONS 8;

2> REORGANIZE PARTITION構文は次のとおりです。

ALTER TABLE tbl_name 
    REORGANIZE PARTITION partition_list 
    INTO(partition_definitions);

partition_definitionsのパーティションの範囲は、partition_listのパーティションの範囲をカバーする必要があります。

 

次に、HASHとKEYパーティションを管理する方法

例としてパーティションテーブルを取り上げます。

コードをコピー
CREATE TABLEクライアント(
    id INT、
    fname VARCHAR(30)、
    lname VARCHAR(30)、
    signed DATE 
PARTITION BY HASH(MONTH(signed))
PARTITIONS 12;
コードをコピー

HASHパーティションとKEYパーティションの場合、上記のRANGEおよびLISTパーティション構文(DROP、TRUNCATE、REORGANIZEパーティションなど)はサポートされていません。

実際、サポートされているのは1種類の「パーティション調整」のみです。

ALTER TABLEクライアントCOALESCE PARTITION 4;

このコマンドの目的は、clientsテーブルの4つのパーティションを12から8にカットすることです。

ALTER TABLEクライアントADD PARTITION PARTITIONS 6;

同様に、このコマンドは、12から18までの6つのパーティションをクライアントテーブルに追加します。

おすすめ

転載: www.cnblogs.com/pejsidney/p/12718819.html