ビジネス要件とデータの使用頻度に基づいてテーブルのライフサイクルを構成し、自動データ再利用を実行できます。 テーブルのライフサイクルを適切に構成することで、データの保存期間を柔軟に管理し、データの適時性と有効性を確保し、リソース使用量とコストを最小限に抑えることができます。
ライフサイクル
テーブルまたはパーティション内のデータが、最後の更新から指定された期間変更されない場合、テーブルまたはパーティションは MaxCompute によって自動的に再利用されます。 ライフサイクルは期間を指定します。 ライフサイクルベースのテーブルスキャンは、毎日スケジュールされた時刻に実行され、テーブルのすべてのパーティションをスキャンします。
注: パラメーターの値が、パーティション化されていないテーブルに指定されたライフサイクルを超えると、MaxCompute はテーブルのデータを再利用し、テーブルを削除します。
パーティション化されたテーブルの場合、MaxComputeは、テーブルの各パーティションに設定されているLastModifiedTimeパラメーターの値に基づいて、パーティションのデータを回収するかどうかを判断します。最後のパーティションが回収されても、テーブル自体は削除されません。
最後のパーティションが再利用された後にテーブルを自動的に削除する場合は、次のいずれかの方法を使用できます。
説明プロジェクトレベルの設定とテーブルレベルの設定が競合する場合、テーブルレベルの設定が優先されます。
プロジェクトレベルの設定
-- テーブルの最後のパーティションが再利用された後に、テーブルを自動的に削除します。 setproject odps.table.lifecycle.deletemeta.on.expiration=true; -- 最後のパーティションが再利用された後、デフォルトでテーブルを保持します。 setproject odps.table.lifecycle.deletemeta.on.expiration=false;テーブルレベルの設定
--- テーブルを作成し、ライフサイクル関連のパラメーターを構成して、テーブルの最後のパーティションが再利用された後にテーブルを自動的に削除できるようにします。 CREATE TABLE <Table_Name>(id int, name string) partitioned BY (ds string) tblproperties ('lifecycle.deletemeta'='true') lifecycle 1; --- テーブルが存在する場合は、ライフサイクル関連のパラメーターを構成して、テーブルの最後のパーティションが再利用された後にテーブルを自動的に削除できるようにします。 ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='true'); -- 最後のパーティションが再利用された後、デフォルトでテーブルを保持します。 ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='false');
次の表に、ライフサイクル関連の操作を示します。
操作 | 説明 | ロール | プラットフォーム |
テーブルの作成時にテーブルのライフサイクルを構成するか、既存のテーブルのライフサイクルを構成または変更します。 | テーブルに対する変更権限を持つユーザー | 次のプラットフォームでステートメントを実行できます。 | |
指定されたテーブルまたはパーティションに構成されているライフサイクルを無効化または復元します。 |
注意事項
タスクスケジューリングの依存関係は、テーブルのライフサイクルが経過した場合のテーブルデータの再利用には影響しません。
パーティションテーブルのライフサイクルを構成する場合、ライフサイクルはテーブルのすべてのパーティションを含むテーブル全体に適用されます。 パーティションレベルでライフサイクルを構成または変更することはできません。
データは、再利用後、デフォルトで 1 日間ゴミ箱に保持されます。 データは 1 日後に完全に削除され、回復することはできません。
ライフサイクル機能により、MaxCompute はテーブルまたはパーティションを定期的に再利用できます。 システムの可用性によって、LastModifiedTime で指定された時間後の期間がテーブルまたはパーティションのライフサイクルを超えたときに、MaxCompute がテーブルまたはパーティションをすぐに再利用できるかどうかが決まります。 したがって、MaxCompute はライフサイクルの経過後すぐにテーブルまたはパーティションを常に再利用できるとは限りません。
アプリケーションのデプロイWordPress サイトのスケーラビリティを向上させるデータが書き込まれたり、更新されたり、削除されたりすると、 パラメーターの値が更新されます。 ライフサイクルが変更されても、 パラメーターの値は変更されません。
テーブルのライフサイクルを構成する
テーブルの作成時にテーブルのライフサイクルを構成する
構文
-- テーブルを作成します。 CREATE [external] TABLE [if not exists] <table_name> [(<col_name> <data_type> [default <default_value>] [comment <col_comment>], ...)] [comment <table_comment>] [partitioned BY (<col_name> <data_type> [comment <col_comment>], ...)] -- 作成するクラスターテーブルのシャッフルおよびソートプロパティを構成します。 [clustered BY | range clustered BY (<col_name> [, <col_name>, ...]) [sorted BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> buckets] -- 外部テーブルにのみ使用されます。 [stored by StorageHandler] -- 外部テーブルにのみ使用されます。 [with serdeproperties (options)] -- 外部テーブルにのみ使用されます。 [location <osslocation>] -- テーブルのライフサイクルを構成します。 lifecycle <days>; -- 既存のテーブルに基づいてテーブルを作成し、既存のテーブルのスキーマを複製します。 CREATE TABLE ステートメントを実行して、データレイクハウスソリューションを実装するために使用される外部テーブルまたは外部プロジェクトの既存のテーブルに基づいてテーブルを作成できます。 create table [if not exists] <table_name> like <existing_table_name> [lifecycle <days>];パラメーター
table_name: 必須。 ライフサイクルを構成するテーブルの名前。
days: 必須。 変更後のライフサイクル。 値は正の整数である必要があります。 単位:日。
説明前のセクションでは、ライフサイクル関連のパラメーターについてのみ説明しました。 テーブル作成のパラメーターの詳細については、「テーブルを作成する」をご参照ください。
例
-- ライフサイクルが 100 日の test_lifecycle テーブルを作成します。 CREATE TABLE test_lifecycle (key string) lifecycle 100;
既存のテーブルのライフサイクルを構成または変更する
次のいずれかの方法を使用して、既存のテーブルのライフサイクルを構成または変更できます。
構文
ALTER TABLE <Table_Name> SET lifecycle <days>;パラメーター
table_name: 必須。 ライフサイクルを変更するテーブルの名前。
days: 必須。 変更後のライフサイクル。 値は正の整数である必要があります。 単位:日。
例
-- test_lifecycle テーブルのライフサイクルを 50 日に変更します。 ALTER TABLE test_lifecycle set lifecycle 50;
テーブルのライフサイクルを無効化または復元する
構文
ALTER TABLE <table_name> [<pt_spec>] {enable|disable} lifecycle;パラメーター
table_name: 必須。 ライフサイクルを無効化または復元するテーブルの名前。
pt_spec: オプション。 ライフサイクルを無効化または復元するテーブルのパーティション。 テーブルに複数レベルのパーティションがある場合は、すべてのパーティションキー列の値を指定する必要があります。 このパラメーターの値は、
partition_col1=col1_value1, partition_col2=col2_value1...形式です。enable および disable: テーブルまたはパーティションのライフサイクルを復元または無効化します。
説明テーブルまたはパーティションのライフサイクルを復元した後、テーブルまたはパーティションのデフォルトのライフサイクルを適用できます。 ライフサイクルを復元する前に、構成されているライフサイクルを確認する必要があります。 これにより、以前の設定の使用によってデータが誤って再利用されるのを防ぎます。
テーブルのライフサイクルを無効にする設定は、パーティションのライフサイクルを復元する設定よりも優先されます。 たとえば、
table disable lifecycleを構成した場合、pt_spec enable lifecycleの構成は有効になりません。テーブルのライフサイクルを無効にした後も、MaxCompute は以前のライフサイクル設定を記録し、ライフサイクル設定を変更できます。
例
例 1:
transテーブルのライフサイクルを無効にします。ALTER TABLE trans disable lifecycle;例 2:
transテーブルの dt='20141111' パーティションのライフサイクルを無効にします。ALTER TABLE trans partition (dt='20141111') disable lifecycle;