DD は、日付(月の何日か)に基づいてデータをテーブルシャードに分割します。各テーブルシャードには特定の 1 日分のデータが格納され、シャード名はその日付(日数)を直接反映します。
仕組み
DD は、パーティションキーから「月の何日か」の値を抽出し、それをテーブルシャードの添字として使用します。たとえば、create_time = '2024-03-15 10:00:00' を持つ行は、15 日目のシャードにマップされます。結果として生成される物理テーブルはその日付(日数)に基づいて命名されるため、シャード名から直感的にどの日のデータが格納されているかを特定できます。
適用範囲/利用シーン
DD は、データのクエリやパージが日単位で行われるワークロードに適しています。各シャードが 1 日分のデータに対応するため、1 つのテーブルシャードを削除するだけで、その日の全データを一括して除去できます。
例
以下の Data Definition Language (DDL) 文では、ユーザー ID (id) に基づいてデータベースシャード(dbpartition)を構成し、さらに create_time の値に基づいて 1 日ごとに 1 つのテーブルシャード(tbpartition)を作成します。tbpartitions 31 を指定することで、最大 31 個のテーブルシャードが作成されます — これは 1 ヶ月における最大日数(31 日)に対応します。
CREATE TABLE test_dd_tb (
id INT,
name VARCHAR(30) DEFAULT NULL,
create_time DATETIME DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8
dbpartition BY HASH(id)
tbpartition BY DD(create_time) tbpartitions 31;制限事項
| 制約条件 | 詳細 |
|---|---|
| パーティションキーのデータ型 | DATE、DATETIME、TIMESTAMP のみ |
| パーティション対象範囲 | テーブルシャード(tbpartition)のみ。データベースシャード(dbpartition)には使用不可 |
| 1 つのデータベースシャードあたりの最大テーブルシャード数 | 31 — 1 ヶ月の最大日数が 31 日であるため |
| PolarDB-X 1.0 の最低バージョン要件 | 5.1.28-1320920 |