スキップしてコンテンツを表示

Amazon Redshift がクラスターに一時テーブルを作成した原因および、そのテーブルにより、ノードのメモリスペースが消費されるかどうかを教えてください。

所要時間1分
0

Amazon Redshift により、クラスターに一時テーブルが作成されたため、その原因を把握したいです。また、これらのテーブルにより、ノードの使用可能なメモリスペースが消費されているかどうかを把握したいです。

解決策

Amazon Redshift は、データ定義言語 (DDL) とデータ操作言語 (DML) 操作の中間クエリ処理結果を格納する一時テーブルを作成します。Amazon Redshift は、これらのテーブルを独立したセッション固有のスキーマに保存します。pg_temp_1 という命名規則が適用されます。ユーザーは、このスキーマ名を指定できません。マテリアライズドビューの更新でも、一時テーブルを使用して中間クエリ結果を保存します。

ユーザーが CREATE TABLE ステートメントTEMPORARY キーワード、TEMP キーワードを使用した場合も、一時テーブルが作成される可能性があります。

重要: # で始まるテーブル名を指定した場合、Amazon Redshift はそのテーブルを一時テーブルとして作成します。コマンド例:

create table #newtable (id) as select * from oldtable;

一時テーブルは、現在のセッション内でのみ表示されます。セッションの終了後、Amazon Redshift はセッションから一時テーブルを自動削除します。

クラスターでデータ共有を有効にする際、そのクラスターをコンシューマーとして設定できます。このシナリオでは、Amazon Redshift は一時オブジェクトを作成し、エンドユーザーがプロデューサークラスターから取得するデータブロックを保存します。

デフォルトでは、データベースユーザーには、PUBLIC グループの自動メンバーシップ経由で一時テーブルの作成許可が付与されます。この権限をブロックするには、次のクエリを実行して PUBLIC グループの TEMP 権限を取り消します。

Revoke TEMPORARY | TEMP on DATABASE db_name from GROUP PUBLIC;

注: db_name をデータベース名に置き換えてください。

次に、一時テーブルの作成を許可するユーザーまたはユーザーグループに TEMP 権限を明示的に付与します。

一時ストレージテーブルについて

一時テーブルは、コンピューティングノード上のローカルストレージを使用します。セッションが終了し、Amazon Redshift が一時テーブルを削除した後、Amazon Redshift はストレージをノードに再度解放します。一時テーブルは、次のストレージ要件に準拠しています。

  • 一時テーブルはクラスターの全体的なストレージ割り当てを使用しますが、ストレージは一時的なものであり、永続的なデータストレージコストは増加しません。
  • 一時テーブルが使用するストレージの量は、データのサイズとクエリの複雑さに影響を受けます。
  • 大規模な一時テーブルを必要とする大規模で複雑なクエリを実行すると、クラスターのストレージ使用量が一時的に急増する可能性があります。

注: デフォルトでは、Amazon Redshift は永続テーブルに対する圧縮と同じ自動圧縮を一時テーブルに適用します。一時テーブルは、効率的なクエリ処理を意図しており、中間結果を格納してクエリのパフォーマンスを改善します。

関連情報

STV_TBL_PERM

STL_SAVE

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ