オラクルハッシュパーティションについて、オラクルヘルプドキュメントの一部
いくつかの調査の後、オラクルは実際にはデフォルトのハッシュ分割によるコンシステントハッシュをサポートしています。それがどのように行われたかは秘密であり、公開されていませんが。しかし、実際にはHashMapの方法を活用していますが、一部のパーティションを非表示にしています。したがって、パーティションを追加/削除する場合、Oracleがさまざまなパーティションのデータを調整する作業は非常に少なくなります。アルゴリズムは、データを4のような2の累乗の数のパーティションに均等に分割することのみを保証します。そうでない場合は、いくつかのパーティションをマージ/分割します。
魔法は、4つのパーティションから5つのパーティションに増やす場合のように、実際には1つのパーティションを2つに分割します。4つのパーティションから3つに減らすと、実際には2つのパーティションが1つにマージされます。
誰かがより多くの洞察を持っている場合は、より詳細な回答を追加してください。
ハッシュ・パーティショニングハッシュ・パーティショニングは、オラクルが特定したパーティショニング・キーに適用するハッシュ・アルゴリズムに基づいて、データをパーティションにマップします。ハッシュアルゴリズムは、パーティション間で行を均等に分散し、パーティションにほぼ同じサイズを与えます。
ハッシュ分割は、デバイス間でデータを均等に分散するための理想的な方法です。ハッシュ分割は、範囲分割の代わりに使いやすい方法です。特に、分割するデータが履歴データでない場合や、明確な分割キーがない場合はそうです。
ノート:
パーティショニングで使用されるハッシュアルゴリズムを変更することはできません。
MYSQLハッシュパーティションについて、mysqlヘルプドキュメントの一部
2つのパーティション機能を提供します。1つはHASHによるパーティションです。もう1つはKEYによるパーティションです。
キーによるパーティション分割は、ハッシュによるパーティション分割と似ていますが、ハッシュパーティション分割でユーザー定義の式を使用する場合、キーパーティション分割のハッシュ関数はMySQLサーバーによって提供されます。MySQL Clusterは、この目的でMD5()を使用します。他のストレージエンジンを使用するテーブルの場合、サーバーはPASSWORD()と同じアルゴリズムに基づく独自の内部ハッシュ関数を使用します。CREATE TABLE ... PARTITION BY KEYの構文規則は、ハッシュでパーティション化されたテーブルを作成する場合の構文規則と似ています。
主な違いは次のとおりです。
•HASHではなくKEYが使用されます。
•KEYは、1つ以上の列名のリストのみを取ります。MySQL 5.1.5以降、パーティショニングキーとして使用される1つまたは複数の列は、テーブルに主キーがある場合は、テーブルの主キーの一部またはすべてを構成する必要があります。
CREATE TABLE k1 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20)
)
PARTITION BY KEY()
PARTITIONS 2;
主キーがないが一意のキーがある場合、その一意のキーがパーティショニングキーに使用されます。
CREATE TABLE k1 (
id INT NOT NULL,
name VARCHAR(20),
UNIQUE KEY (id)
)
PARTITION BY KEY()
PARTITIONS 2;
ただし、一意キー列がNOT NULLとして定義されていない場合、前のステートメントは失敗します。
しかし、それがどのように分割されるかはわかりません。コードを調べる必要があります。