すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:動的パーティショニング

最終更新日:Jan 16, 2025

このトピックでは、ApsaraDB for SelectDB の動的パーティショニング機能について説明し、動的パーティショニング機能の使用方法の例を示します。これは、パーティションを動的に管理し、コストを削減するのに役立ちます。

概要

特定のシナリオでは、テーブルを日単位でパーティション分割できます。パーティションを手動で管理する場合、テーブルのパーティションを作成していない日にデータがテーブルにインポートされない可能性があります。これはメンテナンスコストを増加させます。この問題を解決するには、テーブルを作成するときに動的パーティショニング機能を使用して動的パーティショニングルールを設定できます。 ApsaraDB for SelectDB は、設定されたルールに基づいてパーティションを作成または削除します。実行時に既存のルールを変更してパーティションを管理することもできます。

説明

ApsaraDB for SelectDB では、動的パーティショニング機能を使用して、範囲パーティションのみを動的に作成または削除できます。

動的にパーティション分割されたテーブルの作成

動的パーティショニングルールは、テーブルの作成時または実行時のテーブルの変更時に設定できます。動的パーティショニングルールは、単一のパーティションキー列に基づいてパーティション分割されたテーブルに対してのみ設定できます。次のサンプルコードは、テーブルの作成時に動的パーティショニングルールを設定する方法の例を示しています。

CREATE TABLE tbl1
(...)
PROPERTIES
( 
	"dynamic_partition.prop1" = "value1", // 動的パーティションのプロパティ1
 	"dynamic_partition.prop2" = "value2", // 動的パーティションのプロパティ2
  ...
)

グローバル設定項目

動的パーティショニングに関連する次の設定項目は、ApsaraDB for SelectDB インスタンスに適用されます。

  • dynamic_partition_enable

    動的パーティショニング機能を有効にするかどうかを指定します。デフォルト値:true。このパラメーターは、動的にパーティション分割されたテーブルのパーティショニング操作にのみ影響し、標準テーブルには影響しません。

    実行時に次のコマンドを実行して、このパラメーターを指定できます。

    ADMIN SET FRONTEND CONFIG ("dynamic_partition_enable" = "true")

    動的パーティショニング機能をグローバルに無効にする場合は、このパラメーターを false に設定します。

  • dynamic_partition_check_interval_seconds

    動的パーティショニングスレッドを実行する間隔。単位:秒。デフォルト値:600。これは、動的パーティショニングスレッドが 10 分ごとに実行されることを指定します。

    実行時に次のコマンドを実行して、このパラメーターを変更できます。

    ADMIN SET FRONTEND CONFIG ("dynamic_partition_check_interval_seconds" = "7200")

テーブル設定項目

動的パーティショニングルールを設定するために使用されるパラメーターの名前には、dynamic_partition というプレフィックスが付いています。次の表に、動的パーティショニングに関連するパラメーターを示します。 次の表は、動的パーティショニングに関連するパラメーターについて説明しています。

パラメーター

デフォルト値

説明

dynamic_partition.enable

true

動的パーティショニング機能を有効にするかどうかを指定します。有効な値:

  • true:動的パーティショニング機能を有効にします。

  • false:動的パーティショニング機能を無効にし、動的パーティショニングルールを無視します。

dynamic_partition.time_unit

デフォルト値なし

動的パーティションスケジューリングの単位。有効な値:

  • HOUR: 時間単位でパーティションを作成または削除します。動的に作成されたパーティションの名前サフィックスは、yyyyMMddHH 形式です。例:2020032501。このパラメーターを HOUR に設定する場合、パーティションキー列を DATE 型にすることはできません。

  • DAY: 日単位でパーティションを作成または削除します。動的に作成されたパーティションの名前サフィックスは、yyyyMMdd 形式です。例:20200325

  • WEEK: 週単位でパーティションを作成または削除します。動的に作成されたパーティションの名前サフィックスは、yyyy_ww 形式で、日付が属する年の週を指定します。たとえば、2020 年 3 月 25 日 に作成されたパーティションの名前サフィックス 2020_13 は、2020 年の 13 週目を示します。

  • MONTH: 月単位でパーティションを作成または削除します。動的に作成されたパーティションの名前サフィックスは、yyyyMM 形式です。例:202003

dynamic_partition.time_zone

Asia/Shanghai

動的に作成されたパーティションのタイムゾーン。

dynamic_partition.start

-2147483648,

動的に作成されたパーティションの開始オフセット。負の数値です。time_unit パラメーターと現在の日、週、または月に基づいて、このオフセットより前の指定された時間範囲内のパーティションが削除されます。このパラメーターを -2147483648 に設定すると、履歴パーティションは削除されません。

dynamic_partition.end

デフォルト値なし

動的に作成されたパーティションの終了オフセット。正の数値です。time_unit パラメーターと現在の日、週、または月に基づいて、指定された時間範囲内のパーティションが事前に作成されます。

dynamic_partition.prefix

デフォルト値なし

動的に作成されたパーティションの名前のプレフィックス。

dynamic_partition.create_history_partition

false

履歴パーティションを作成するかどうかを指定します。 dynamic_partition.start パラメーターを空のままにした場合、このパラメーターは有効になりません。このパラメーターを true に設定すると、履歴パーティションが自動的に作成されます。詳細については、このトピックの「」セクションを参照してください。さらに、フロントエンドの 履歴パーティションを作成するためのルール セクションで説明します。また、max_dynamic_partition_num パラメーターは、過剰なパーティションの作成を防ぐために作成できるパーティションの最大数を指定します。作成するパーティションの数が max_dynamic_partition_num パラメーターの値より大きい場合、過剰なパーティションは作成されません。

dynamic_partition.history_partition_num

-1

作成する履歴パーティションの数。このパラメーターは、create_history_partition パラメーターが true に設定されている場合に有効になります。このパラメーターを -1 に設定すると、作成する履歴パーティションの数は指定されません。

dynamic_partition.reserved_history_periods

"NULL"

保持する履歴パーティションの時間範囲。dynamic_partition.time_unit パラメーターが DAY、WEEK、または MONTH に設定されている場合、このパラメーターの値を [yyyy-MM-dd,yyyy-MM-dd],[...,...] 形式で設定する必要があります。dynamic_partition.time_unit パラメーターが HOUR に設定されている場合、このパラメーターの値を [yyyy-MM-dd HH:mm:ss,yyyy-MM-dd HH:mm:ss],[...,...] 形式で設定する必要があります。

dynamic_partition.buckets

デフォルト値なし

動的に作成されたパーティションのバケット数。

dynamic_partition.start_day_of_week

1

各週の開始点。このパラメーターは、time_unit パラメーターが WEEK に設定されている場合に有効になります。有効な値:1~7。値 1 は月曜日を指定し、値 7 は日曜日を指定します。デフォルト値:1。これは、月曜日が各週の開始点であることを指定します。

dynamic_partition.start_day_of_month

1

各月の開始点。このパラメーターは、time_unit パラメーターが MONTH に設定されている場合に有効になります。有効な値:1~28。値 1 は各月の最初の日を指定し、値 28 は各月の 28 日目を指定します。このパラメーターを 29、30、または 31 に設定することはできません。これは、うるう年またはうるう月によって発生するあいまいさを防ぎます。デフォルト値:1。これは、各月の最初の日が各月の開始点であることを指定します。

dynamic_partition.reserved_history_periods パラメーターの設定例

たとえば、テーブルが日単位でパーティション分割されているとします。

  • 次の動的パーティショニングパラメーターを指定します。time_unit="DAY/WEEK/MONTH", end=3, start=-3, reserved_history_periods="[2020-06-01,2020-06-20],[2020-10-31,2020-11-15]"

    システムは、次の時間範囲の履歴パーティションを自動的に保持します。

    ["2020-06-01","2020-06-20"],["2020-10-31","2020-11-15"]
  • 次の動的パーティショニングパラメーターを指定します。time_unit="HOUR", end=3, start=-3, reserved_history_periods="[2020-06-01 00:00:00,2020-06-01 03:00:00]"

    システムは、次の時間範囲の履歴パーティションを自動的に保持します。

    ["2020-06-01 00:00:00","2020-06-01 03:00:00"]

    reserved_history_periods パラメーターの値では、[...,...] 形式の各間隔は、開始時刻と終了時刻で構成されます。開始時刻と終了時刻の両方を指定する必要があり、開始時刻を終了時刻より後にすることはできません。

履歴パーティションの作成ルール

create_history_partition パラメーターを true に設定すると、ApsaraDB for SelectDB は、dynamic_partition.start および dynamic_partition.history_partition_num パラメーターの値に基づいて、作成する履歴パーティションの数を決定します。

たとえば、expect_create_partition_num パラメーターを使用して、作成する履歴パーティションの数を指定します。次のルールに基づいて、このパラメーターの値を計算します。

  • create_history_partition=true

    • dynamic_partition.history_partition_num パラメーターが -1 に設定されている場合、次の式を使用して expect_create_partition_num パラメーターの値を計算します。expect_create_partition_num = end - start

    • dynamic_partition.history_partition_num パラメーターが別の値に設定されている場合、次の式を使用して expect_create_partition_num パラメーターの値を計算します。expect_create_partition_num = end - Max(start,-history_partition_num)

  • create_history_partition=false:この場合、履歴パーティションは作成されません。次の式を使用して expect_create_partition_num パラメーターの値を計算します。expect_create_partition_num = end - 0

説明

expect_create_partition_num パラメーターの値が max_dynamic_partition_num パラメーターの値より大きい場合、過剰なパーティションは作成されません。 max_dynamic_partition_num パラメーターのデフォルト値は 500 です。

履歴パーティションの例

  1. たとえば、現在の日付が 2021-05-20 で、テーブルが日単位でパーティション分割されており、次の動的パーティショニングパラメーターが指定されているとします。create_history_partition=true, end=3, start=-3, history_partition_num=1。システムは次のパーティションを自動的に作成します。

    p20210519
    p20210520
    p20210521
    p20210522
    p20210523
  2. たとえば、現在の日付が 2021-05-20 で、テーブルが日単位でパーティション分割されており、次の動的パーティショニングパラメーターが指定されているとします。create_history_partition=true, end=3, start=-3, history_partition_num=5。システムは次のパーティションを自動的に作成します。

    p20210517
    p20210518
    p20210519
    p20210520
    p20210521
    p20210522
    p20210523
  3. たとえば、現在の日付が 2021-05-20 で、テーブルが日ごとにパーティション分割され、次の動的パーティション分割パラメーターが指定されているとします。create_history_partition=true, end=3, start=-3, history_partition_num=-1システムは、自動的に次のパーティションを作成します。

    p20210517
    p20210518
    p20210519
    p20210520
    p20210521
    p20210522
    p20210523
    重要

    動的パーティショニング機能を使用する場合、dynamic_partition.start パラメーターで指定された開始オフセットと dynamic_partition.end パラメーターで指定された終了オフセットの間の時間範囲内の一部のパーティションは、予期しない問題により失われる可能性があります。dynamic_partition.end パラメーターで指定された終了オフセットと現在の日付の間の時間範囲で失われたパーティションは再作成されますが、dynamic_partition.start パラメーターで指定された開始オフセットと現在の日付の間の時間範囲で失われたパーティションは再作成されません。

  • パーティションキー列が DATE 型の k1 である tbl1 テーブルの動的パーティショニングルールを設定します。データは日単位でパーティション分割されます。過去 7 日以内のパーティションのみが保持され、今後 3 日間のパーティションが事前に作成されます。

    CREATE TABLE tbl1
    (
    	k1 DATE, // パーティションキー列
    	k2 int
    )
    PARTITION BY RANGE(k1) ()
    DISTRIBUTED BY HASH(k1)
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true", // 動的パーティショニングを有効にする
    	"dynamic_partition.time_unit" = "DAY", // パーティションを日単位で作成または削除する
    	"dynamic_partition.start" = "-7", // 過去7日間のパーティションを保持する
    	"dynamicpartition.end" = "3", // 今後3日間のパーティションを事前に作成する
    	"dynamic_partition.prefix" = "p", // パーティション名のプレフィックス
    	"dynamic_partition.create_history_partition" = "true", // 履歴パーティションを作成する
    	"dynamic_partition.buckets" = "32" // 各パーティションのバケット数
    );

    たとえば、現在の日付が 2020-05-29 であるとします。上記のルールに基づいて、tbl1 テーブルには次のパーティションが作成されます。

    p20200529: ["2020-05-29", "2020-05-30")
    p20200530: ["2020-05-30", "2020-05-31")
    p20200531: ["2020-05-31", "2020-06-01")
    p20200601: ["2020-06-01", "2020-06-02")

    翌日である 2020 年 5 月 30 日に、新しいパーティション p20200602: ["2020-06-02", "2020-06-03") が作成されます。

    2020 年 6 月 6 日には、dynamic_partition.start パラメーターが -7 に設定されているため、7 日前に作成されたパーティションが削除されます。この場合、p20200529 パーティションが削除されます。

  • パーティションキー列が DATETIME 型の k1 である tbl1 テーブルの動的パーティショニングルールを設定します。データは週単位でパーティション分割されます。過去 2 週間以内のパーティションのみが保持され、今後 2 週間のパーティションが事前に作成されます。

    CREATE TABLE tbl1
    (
    	k1 DATETIME, // パーティションキー列
      ...
    )
    PARTITION BY RANGE(k1) ()
    DISTRIBUTED BY HASH(k1)
    PROPERTIES
    (	
    	"dynamic_partition.enable" = "true", // 動的パーティショニングを有効にする
    	"dynamic_partition.time_unit" = "WEEK", // パーティションを週単位で作成または削除する
    	"dynamic_partition.start" = "-2", // 過去2週間のパーティションを保持する
    	"dynamic_partition.end" = "2", // 今後2週間のパーティションを事前に作成する
    	"dynamic_partition.prefix" = "p", // パーティション名のプレフィックス
    	"dynamic_partition.create_history_partition" = "true", // 履歴パーティションを作成する
    	"dynamic_partition.buckets" = "8" // 各パーティションのバケット数
    );

    たとえば、現在の日付が 2020-05-29 であるとします。これは 2020 年の第 22 週です。デフォルトでは、各週の開始点は月曜日です。上記のルールに基づいて、tbl1 テーブルには次のパーティションが作成されます。

    p2020_22: ["2020-05-25 00:00:00", "2020-06-01 00:00:00")
    p2020_23: ["2020-06-01 00:00:00", "2020-06-08 00:00:00")
    p2020_24: ["2020-06-08 00:00:00", "2020-06-15 00:00:00")

    各パーティションの開始点は月曜日です。 k1 列は DATETIME 型であるため、システムはパーティションキー値の時、分、秒を 00:00:00 で補完します。

    2020 年 6 月 15 日(2020 年の第 25 週)には、2 週間前に作成されたパーティションが削除されます。この場合、p2020_22 パーティションが削除されます。

    前の例では、dynamic_partition.start_day_of_week パラメーターを 3 に設定すると、水曜日が各週の開始点として指定され、次のパーティションが作成されます。

    p2020_22: ["2020-05-27 00:00:00", "2020-06-03 00:00:00")
    p2020_23: ["2020-06-03 00:00:00", "2020-06-10 00:00:00")
    p2020_24: ["2020-06-10 00:00:00", "2020-06-17 00:00:00")

    作成されたパーティションは、現在の週の水曜日から翌週の火曜日までの時間範囲にあります。

    説明

    2019-12-31 と 2020-01-01 は同じ週に属します。パーティションの開始点が 2019-12-31 の場合、パーティションの名前は p2019_53 となります。パーティションの開始点が 2020-01-01 の場合、パーティションの名前は p2020_01 となります。

  • パーティションキー列が DATE 型の k1 である tbl1 テーブルの動的パーティショニングルールを設定します。データは月単位でパーティション分割されます。履歴パーティションは削除されず、今後 2 か月のパーティションが事前に作成されます。さらに、各月の 3 日目が各月の開始点として指定されます。

    CREATE TABLE tbl1
    (
    	k1 DATE, // パーティションキー列
      ...
    )
    PARTITION BY RANGE(k1) ()
    DISTRIBUTED BY HASH(k1)
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true", // 動的パーティショニングを有効にする
    	"dynamic_partition.time_unit" = "MONTH", // パーティションを月単位で作成または削除する
    	"dynamic_partition.end" = "2", // 今後2か月のパーティションを事前に作成する
    	"dynamic_partition.prefix" = "p", // パーティション名のプレフィックス
    	"dynamic_partition.create_history_partition" = "true", // 履歴パーティションを作成する
            "dynamic_partition.history_partition_num" = "6", // 履歴パーティションの数を6に設定する
    	"dynamic_partition.buckets" = "8", // 各パーティションのバケット数
    	"dynamic_partition.start_day_of_month" = "3" // 各月の開始点を3日目に設定する
    );

    たとえば、現在の日付が 2020-05-29 であるとします。上記のルールに基づいて、tbl1 テーブルには次のパーティションが作成されます。

    p202005: ["2020-05-03", "2020-06-03")
    p202006: ["2020-06-03", "2020-07-03")
    p202007: ["2020-07-03", "2020-08-03")

    dynamic_partition.start パラメーターが空であるため、履歴パーティションは削除されません。

    たとえば、現在の日付が 2020-05-20 で、開始点が各月の 28 日目の場合、次のパーティションが作成されます。

    p202004: ["2020-04-28", "2020-05-28")
    p202005: ["2020-05-28", "2020-06-28")
    p202006: ["2020-06-28", "2020-07-28")

動的パーティショニングパラメーターの変更

実行時に次のステートメントを実行して、動的パーティショニングパラメーターを変更します。

ALTER TABLE tbl1 SET( "dynamic_partition.prop1" = "value1", ...); // 変更後の動的パーティションのプロパティ

特定の動的パーティショニングパラメーターを変更すると、競合が発生する可能性があります。たとえば、データが日単位でパーティション分割され、次のパーティションが作成されているとします。

p20200519: ["2020-05-19", "2020-05-20")
p20200520: ["2020-05-20", "2020-05-21")
p20200521: ["2020-05-21", "2020-05-22")

データを月単位でパーティション分割する場合、システムは範囲が ["2020-05-01", "2020-06-01") であるパーティションを作成しようとします。ただし、このパーティションの範囲は既存のパーティションの範囲と競合します。したがって、パーティションを作成できません。範囲が ["2020-06-01", "2020-07-01") であるパーティションは作成できます。この場合、2020-05-22 から 2020-05-30 までの時間範囲のパーティションを作成する必要があります。

動的にパーティション分割されたテーブルのパーティションの削除

動的にパーティション分割されたテーブルのパーティションを削除する前に、次のステートメントを実行して動的パーティショニング機能を無効にする必要があります。

ALTER TABLE tbl1 SET ("dynamic_partition.enable" = "false"); // 動的パーティショニング機能を無効にする

次に、次のステートメントを実行して、特定のパーティションを削除します。

ALTER TABLE tbl1 DROP PARTITION p20200519;

通常、動的にパーティション分割されたテーブルのパーティションを削除した後、動的パーティショニング機能を再度有効にする必要があります。これにより、ApsaraDB for SelectDB は、後続のビジネス操作中にパーティションを自動的に管理し続けることができます。

ALTER TABLE tbl1 SET ("dynamic_partition.enable" = "true"); // 動的パーティショニング機能を再度有効にする

動的にパーティション分割されたテーブルのスケジューリングステータスのクエリ

次のステートメントを実行して、現在のデータベース内のすべての動的にパーティション分割されたテーブルのスケジューリングステータスをクエリします。

mysql> SHOW DYNAMIC PARTITION TABLES;
+-----------+--------+----------+-------------+------+--------+---------+-----------+----------------+---------------------+--------+------------------------+----------------------+-------------------------+
| TableName | Enable | TimeUnit | Start       | End  | Prefix | Buckets | StartOf   | LastUpdateTime | LastSchedulerTime   | State  | LastCreatePartitionMsg | LastDropPartitionMsg | ReservedHistoryPeriods  |
+-----------+--------+----------+-------------+------+--------+---------+-----------+----------------+---------------------+--------+------------------------+----------------------+-------------------------+
| d3        | true   | WEEK     | -3          | 3    | p      | 1       | MONDAY    | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | [2021-12-01,2021-12-31] | // テーブル名、有効化、時間単位、開始、終了、プレフィックス、バケット、開始日、最終更新日時、最終スケジューラ日時、状態、最終作成パーティションメッセージ、最終削除パーティションメッセージ、予約済み履歴期間
| d5        | true   | DAY      | -7          | 3    | p      | 32      | N/A       | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
| d4        | true   | WEEK     | -3          | 3    | p      | 1       | WEDNESDAY | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    | 
| d6        | true   | MONTH    | -2147483648 | 2    | p      | 8       | 3rd       | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
| d2        | true   | DAY      | -3          | 3    | p      | 32      | N/A       | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
| d7        | true   | MONTH    | -2147483648 | 5    | p      | 8       | 24th      | N/A            | 2020-05-25 14:29:24 | NORMAL | N/A                    | N/A                  | NULL                    |
+-----------+--------+----------+-------------+------+--------+---------+-----------+----------------+---------------------+--------+------------------------+----------------------+-------------------------+
7 rows in set (0.02 sec)
  • LastUpdateTime:動的パーティショニングパラメーターが最後に変更された日時。

  • LastSchedulerTime:動的パーティションスケジューリングが最後に実行された日時。

  • State:最後の動的パーティションスケジューリングの状態。

  • LastCreatePartitionMsg:パーティションが最後に動的に作成されたときに返されたエラーメッセージ。

  • LastDropPartitionMsg:パーティションが最後に動的に削除されたときに返されたエラーメッセージ。

高度な操作

動的にパーティション分割されたテーブルは、手動でパーティション分割されたテーブルに変換できます。ただし、テーブルは動的にパーティション分割するか、手動でパーティション分割することのみ可能です。

手動でパーティション分割されたテーブルを動的にパーティション分割されたテーブルに変換する

テーブルの作成時にテーブルの動的パーティショニングルールを設定しない場合、実行時に ALTER TABLE ステートメントを実行して動的パーティショニングパラメーターを変更することで、テーブルの動的パーティショニングルールを設定できます。

動的パーティショニング機能が有効になると、パーティションを手動で管理できなくなります。代わりに、システムは指定した動的パーティショニングパラメーターに基づいてパーティションを自動的に管理します。

重要

dynamic_partition.start パラメーターが指定されている場合、動的に作成されたパーティションの開始オフセットより前の指定された時間範囲内の履歴パーティションは削除されます。

動的にパーティション分割されたテーブルを手動でパーティション分割されたテーブルに変換する

ALTER TABLE tbl_name SET ("dynamic_partition.enable" = "false") ステートメントを実行して、動的パーティショニング機能を無効にし、動的にパーティション分割されたテーブルを手動でパーティション分割されたテーブルに変換できます。

動的パーティショニング機能が無効になると、パーティションは自動的に管理されなくなります。ALTER TABLE ステートメントを実行して、パーティションを作成または削除する必要があります。

FAQ

  • Q: 動的にパーティション分割されたテーブルを作成するときに "fe config dynamic_partition_enable が false の場合、動的パーティションを持つテーブルを作成できませんでした" というエラーが報告された場合はどうすればよいですか?

    A: 動的パーティションテーブルを作成できません。これは、動的パーティショニング機能のグローバルパラメータ dynamic_partition_enable が false に設定されているためです。 ADMIN SET FRONTEND CONFIG ("dynamic_partition_enable" = "true") コマンドを実行して、このグローバルパラメータを true に設定してください。

  • Q:動的に作成されたパーティションのバケット数を指定するにはどうすればよいですか?

    A:動的に作成されたパーティションは、システムの内部スケジューリングプロセスによって自動的に作成されます。テーブルのパーティションが自動的に作成されると、システムはテーブルのデフォルトパラメーター設定ではなく、dynamic_partition というプレフィックスが付いた動的パーティショニングパラメーターの設定を使用します。適用される動的パーティショニングパラメーターは、パーティションのバケット数も指定します。次のサンプルコードは例を示しています。

    CREATE TABLE tbl1 (
    `k1` int,
    `k2` date
    )
    PARTITION BY RANGE(k2)() // 初期パーティションは作成されない
    DISTRIBUTED BY HASH(k1) BUCKETS 3 // テーブルのデフォルト設定
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true", // 動的パーティショニングを有効にする
    	"dynamic_partition.time_unit" = "DAY", // パーティションを日単位で作成または削除する
    	"dynamic_partition.start" = "-3", // 過去3日間のパーティションを保持する
    	"dynamic_partition.end" = "3", // 今後3日間のパーティションを事前に作成する
    	"dynamic_partition.prefix" = "p", // パーティション名のプレフィックス
    	"dynamic_partition.create_history_partition" = "true", // 履歴パーティションを作成する
    	"dynamic_partition.buckets" = "32" // 動的パーティショニングのバケット数
    );

    前の例では、PARTITION BY 句にパーティション定義が含まれていないため、初期パーティションは作成されません。次のパラメーターが指定されています。DISTRIBUTED BY HASH(k1) BUCKETS 3 および "dynamic_partition.buckets" = "32"

    前者のパラメーター設定はテーブルのデフォルト設定であり、後者のパラメーター設定は動的パーティショニング専用です。システムがパーティションを自動的に作成する場合、バケット数は 3 ではなく 32 に設定されます。ALTER TABLE tbl1 ADD PARTITION ステートメントを実行してパーティションを手動で作成する場合、バケット数は 3 に設定されます。動的に作成されたパーティションは、個別の設定セットを使用します。テーブルのデフォルトパラメーター設定は、動的パーティショニング用に排他的なパラメーター設定が設定されていない場合にのみ使用されます。

    CREATE TABLE tbl3 (
    `k1` int,
    `k2` date
    )
    PARTITION BY RANGE(k2)(
    	PARTITION p1 VALUES LESS THAN ("2019-10-10") // 手動で作成されたパーティション
    )
    DISTRIBUTED BY HASH(k1) BUCKETS 3 // テーブルのデフォルト設定
    PROPERTIES
    (
    	"dynamic_partition.enable" = "true", // 動的パーティショニングを有効にする
    	"dynamic_partition.time_unit" = "DAY", // パーティションを日単位で作成または削除する
    	"dynamic_partition.start" = "-3", // 過去3日間のパーティションを保持する
    	"dynamic_partition.end" = "3", // 今後3日間のパーティションを事前に作成する
    	"dynamic_partition.prefix" = "p", // パーティション名のプレフィックス
            "dynamic_partition.create_history_partition" = "true", // 履歴パーティションを作成する
    	"dynamic_partition.buckets" = "32" // 動的パーティショニングのバケット数
    );

    この例では、p1 パーティションは手動で作成されます。このパーティションはテーブルのデフォルトパラメーター設定を使用し、バケット数は 3 に設定されます。ただし、システムによって動的に作成されたパーティションは、引き続き動的パーティショニング専用のパラメーター設定を使用し、バケット数は 32 に設定されます。