MySQL 5.5のパーティション戦略(InnoDB)

MySQL 5.5(InnoDB)テーブルのパーティション戦略を実装しようとしましたが、私の理解が正しいかどうか、あるいはパーティションを作成する際に構文を変更する必要があるかどうかはわかりません。

テーブル "アップル"は10ミリの行を持っています...列 "A"から "H" PKは列「A」、「B」および「C」であり、

列「A」はchar列であり、200万行のグループを識別できます。 私は、列 "A"はそれ以来パーティションを試して実装するのに良い候補になるだろうと考えました 私はこの列で選択して削除し、データがもはや必要でなくなったときに実際にパーティションを切り捨てることができます。

私はこのコマンドを発行した:     ALTER TABLE Apple     キーによる区切り(A);

次のコマンドを使用してパーティション情報を確認した後:     SELECT PARTITION_NAME、TABLE_ROWS FROM     INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'Apple';

私はすべてのデータがパーティションp0にあるのを見る

私は、MySQLが2百万のグループのパーティションを自動的に打ち破ろうとしていたのは間違っていますか?

Alterコマンドのパーティション数を指定する必要がありましたか?

私はこれがパーティションに2百万行のグループを作成し、新しいデータが列 "A"の一意の値で来るように新しいパーティションを作成することを望んでいた。

申し訳ありませんが、これはあまりにも言葉遣いだった。 ありがとう - JeffSpicoli

1

1 答え

はい、パーティションの数を指定する必要があります(デフォルトでは1つのパーティションを作成すると仮定しています)。 KEYによるパーティション分割は、内部ハッシュ関数 http://dev.mysqlを使用します。 com/doc/refman/5.1/ja/partitioning-key.html を参照してください。そのため、columnの値に基づいてパーティションが選択されるのではなく、そこから計算されたハッシュに基づいてパーティションが選択されます。ハッシュ関数は同じ入力に対して同じ結果を返します。したがって、同じ値を持つすべての行は同じパーティションになります。

しかし、DROP PARTITIONを実行できるようにするには、RANGEで分割したいと思うかもしれません(KEYによってパーティション化されている場合は、パーティション内で行が均等に配置されていることが分かります。

1
追加された