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

PolarDB:範囲分割と間隔範囲分割の切り替え

最終更新日:May 27, 2024

このトピックでは、範囲分割と間隔範囲分割を切り替える方法について説明します。

レンジパーティションテーブルをインターバルレンジパーティションテーブルに変更する

ALTER TABLE...SET INTERVALステートメントを実行して、既存の範囲分割テーブルを間隔範囲分割テーブルに変更します。

範囲または時間間隔を設定すると、データベースは指定された範囲または時間間隔に基づいてパーティションを自動的に作成します。 次に、データが新しいパーティションに挿入されます。

ステートメントは次の形式を使用します。

ALTER TABLE <table_name> SET INTERVAL (<constant> | <expression>);

INTERVALパラメーターの詳細については、「間隔範囲の分割」をご参照ください。

間隔範囲分割テーブルを範囲分割テーブルに変更する

SET INTERVAL() ステートメントを実行して、間隔範囲のパーティション分割を無効にします。 間隔範囲パーティション分割を無効にすると、データベースは間隔範囲パーティション分割テーブルを範囲パーティション分割テーブルに変更します。 間隔範囲分割を実施するための範囲または時間間隔は、範囲分割を実施するための範囲または時間間隔に変更される。

ステートメントは次の形式を使用します。

ALTER TABLE <table_name> SET INTERVAL ();

次の例は、販売テーブルをレンジパーティションテーブルからインターバルレンジパーティションテーブルに変更し、そこにデータを挿入する方法を示しています。

次の例に示すように、salesという名前のレンジパーティションテーブルを作成します。

テーブルの販売を作成する
(
  prod_id int,
  prod_quantity int、
  sold_month日付
)
範囲によるパーティー (sold_month)
(
  パーティーp1
    より少ない値 ('15-JAN-2019 ') 、
  パーティーp2
    より少ない値 ('15-FEB-2019 ')
); 

次の例に示すように、ALL_TAB_PARTITIONSビューを照会します。

SELECT partition_name、ALL_TAB_PARTITIONSからのhigh_value;

次の応答が返されます。

partition_name | high_value
---------------- + ----------------------
 P1 | FOR VALUES FROM ('15-JAN-19 00:00:00 ') TO ('15-FEB-19 00:00:00')
 P2 | (ミンバル) から ('15-JAN-19 00:00:00 ') までの値
(2行) 

次の例に示すように、レンジパーティションテーブルをインターバルレンジパーティションテーブルに変更します。

ALTER TABLE sales SET INTERVAL (NUMTOYMINTERVAL(1、'MONTH'));

次の例に示すように、レンジパーティションを超えるデータを挿入します。

販売値に挿入 (1,100、'05-APR-2019 ');
挿入0 1 

データを挿入した後、次の例に示すように、ALL_TAB_PARTITIONSビューを再度クエリします。

SELECT partition_name、ALL_TAB_PARTITIONSからのhigh_value;

データが挿入されると、システムは間隔範囲パーティションの名前を生成します。 名前はセッションによって異なります。 次の応答が返されます。

partition_name | high_value
---------------- + ----------------------
 SYS596430103 | ('15-MAR-19 00:00:00 ') から ('15-APR-19 00:00:00') までの値
 P1 | FOR VALUES FROM ('15-JAN-19 00:00:00 ') TO ('15-FEB-19 00:00:00')
 P2 | (ミンバル) から ('15-JAN-19 00:00:00 ') までの値
(3行)