このトピックでは、自動パーティショニングモードでPolarDB-Xデータベースでサポートされるパーティショニング関数について説明します。
用語
パーティションキー: パーティションキーには、PolarDB-Xがテーブルを水平にパーティション化する1つ以上の列が含まれます。
partition key column: パーティションキー列は、PolarDB-Xがテーブル内のデータをパーティションに分割する際に基づく列です。 パーティションキーは、1つ以上のパーティションキー列で構成されます。
ベクトルパーティションキー: ベクトルパーティションキーは、
partition by Hash(c1,c2,c3)
の (c1,c2,c3) などの1つ以上のパーティションキー列で構成されます。single-columnパーティションキー: 単一列パーティションキーには、
partition by Hash(c1)
のc1など、1つのパーティションキー列のみが含まれます。パーティショニング関数: パーティショニング関数は、パーティションキー列を入力パラメーターとして使用し、どのPolarDB-Xがデータをテーブルのパーティションにルーティングするかに基づいて結果を返します。 例:
ハッシュによるパーティション (To_Days(c1))
。単調性: 分割関数の単調性は、独立変数xの値が増加または減少するときにfunc(x) 関数によって返される値の変化傾向を表します。 分割関数は、以下のタイプのうちの1つの単調性を有し得る。 厳密な単調性または厳密でない単調性を持つパーティション関数のみが、範囲クエリのパーティションプルーニングをサポートします。
厳密な単調性: 独立変数xの値が独立変数yの値よりも大きい場合、func(x) 関数によって返される値はfunc(y) 関数による値よりも大きくなります。 独立変数xの値が独立変数yの値よりも小さい場合、func(x) 関数の値はfunc(y) 関数の値よりも小さくなります。
非厳密単調性: 独立変数xの値が独立変数yの値よりも大きい場合、func(x) 関数によって返される値はfunc(y) 関数による値以上です。 独立変数xの値が独立変数yの値よりも小さい場合、func(x) 関数の値はfunc(y) 関数の値よりも小さいか等しい。
単調性なし: 独立変数xの値が独立変数yの値よりも大きい場合、func(x) 関数によって返される値はfunc(y) 関数による値以上ではありません。
制限事項
次の表に、PolarDB-Xでサポートされているパーティション関数、パーティション関数をサポートするPolarDB-Xのバージョン、パーティション関数の単調性、およびパーティション関数でサポートされているパーティションキー列のデータ型を示します。
パーティション分割関数 | 説明 | サポートされているバージョン | 単調性 | パーティションキー列のサポートデータ型 | ||
1整数型 | 2日付と時刻のタイプ | 3文字列型 | ||||
| 入力日の年を返します。 詳細については、MySQLドキュメントの「YEAR(date) 」をご参照ください。 | 5.4.13以降 | 非厳密な単調性 | ❌ | ✅ | ❌ |
| 入力日の月を返します。 詳細については、MySQLドキュメントのMONTH(date) をご参照ください。 | 5.4.13以降 | 単調性なし | ❌ | ✅ | ❌ |
| 1月1日0000から入力日までの日数を返します。 詳細については、MySQLドキュメントの「TO_DAYS(date) 」をご参照ください。 | 5.4.13以降 | 非厳密な単調性 | ❌ | ✅ | ❌ |
| 1月1日から入力日0000の月数を返します。 この関数は、PolarDB-X固有の関数です。 | 5.4.16-16717637以降 | 非厳密な単調性 | ❌ | ✅ | ❌ |
| 1月1日0000から入力日までの週数を返します。 この関数は、PolarDB-X固有の関数です。 | 5.4.16-16717637以降 | 非厳密な単調性 | ❌ | ✅ | ❌ |
| 1月1日0000 00:00:00から入力時刻までの秒数を返します。 詳細については、MySQLドキュメントの「TO_SECONDS(expr) 」をご参照ください。 | 5.4.13以降 | 非厳密な単調性 | ❌ | ✅ | ❌ |
| 1月1日1970 00:00:00 UTCから入力時刻までの秒数を返します。 詳細については、MySQLドキュメントの「UNIX_TIMESTAMP([date]) 」をご参照ください。 | 5.4.13以降 | 非厳密な単調性 | ❌ | ✅ | ❌ |
| 入力日の週番号を返します。 たとえば、日曜日には1が返され、月曜日には2が返され、土曜日には7が返されます。 詳細については、MySQLドキュメントの「DAYOFWEEK(date) 」をご参照ください。 | 5.4.16-16717637以降 | 単調性なし | ❌ | ✅ | ❌ |
| 現在の月の入力日の日付を返します。 有効な値: 1 ~ 31。 詳細については、MySQLドキュメントの「DAYOFMONTH(date) 」をご参照ください。 | 5.4.16-16717637以降 | 単調性なし | ❌ | ✅ | ❌ |
| 現在の年の入力日の日付を返します。 有効な値: 1 ~ 366 詳細については、MySQLドキュメントの「DAYOFYEAR(date) 」をご参照ください。 | 5.4.16-16717637以降 | 単調性なし | ❌ | ✅ | ❌ |
SUBSTR/SUBSTRING | 入力文字列の部分文字列を返します。 詳細については、MySQLドキュメントの「SUBSTR() およびSUBSTRING() 」をご参照ください。 | 5.4.16-16717637以降 | 単調性なし | ❌ | ❌ | ✅ |
| 入力文字列から長さn文字の右端の部分文字列を返します。 詳細については、MySQLドキュメントの「RIGHT(str,len) 」をご参照ください。 | 5.4.18-17034692以降 | 単調性なし | ❌ | ❌ | ✅ |
| 入力文字列から長さn文字の左端の部分文字列を返します。 詳細については、MySQLドキュメントの「LEFT(str,len) 」をご参照ください。 | 5.4.18-17034692以降 | 単調性なし | ❌ | ❌ | ✅ |
1. 整数型: BIGINT、BIGINT UNSINGEDINT、INT、INT UNSINGED、MEDIUMINT、MEDIUMINT UNSINGED、SMALLINT、SMALLINT UNSINGED、TINYINT、およびTINYINT UNSINGED
2. 日付と時刻のタイプ: DATETIME、Date、およびTIMESTAMP
3. 文字列型: CHARおよびVARCHR
次の表に、PolarDB-Xでサポートされているパーティション化機能を適用できるパーティション化ポリシーを示します。
パーティション分割関数 | キー分割 | HASHパーティショニング | レンジパーティショニング | RANGE COLUMNSパーティショニング | リスト分割 | リスト列パーティショニング | CO_HASHパーティショニング | ||
単一列パーティションキー | ベクトル分割キー | 単一列パーティションキー | ベクトル分割キー | ||||||
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
TO_SECOND | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
SUBSTR/SUBSTRING | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |