リファレンス: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つのパーティションをクライアントテーブルに追加します。