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

PolarDB:グローバル一時テーブル

最終更新日:Jul 01, 2024

は、グローバル一時テーブルとネイティブPostgreSQLローカル一時テーブルをサポートします。

構文

CREATE GLOBAL TEMPORARY|TEMP TABLE table-name
    { column-definition [ , column-definition ] * }
[ ON COMMIT {DELETE | PRESERVE} ROWS ]
  • ON COMMIT DELETE ROWS句は、現在のトランザクションがコミットされた後に一時テーブルからデータを削除するために使用されます。

  • ON COMMIT PRESERVE ROWS句は、現在のトランザクションがコミットされた後にグローバル一時テーブルにデータを保持するために使用されます。

  • ON COMMIT DROP句はサポートされていません。

  • ON COMMIT句を使用しない場合は、デフォルトでON COMMIT DELETE ROWS句が使用されます。

説明

  • すべてのデータベースセッションは、グローバル一時テーブルのテーブル定義を共有します。 セッションがグローバル一時テーブルを作成するとき、他のセッションもこのグローバル一時テーブルを使用できます。

  • グローバル一時テーブルに格納されたデータは、データを生成するセッションに対してプライベートである。 各セッションは、グローバル一时テーブル内の独自のデータにのみアクセスできます。

  • セッションが終了すると、セッションが使用するグローバル一時テーブルのデータと基になるストレージが消去されます。

  • グローバル一時テーブルを他のテーブルに結合したり、グローバル一時テーブルにインデックスを作成したり、グローバル一時テーブルのインデックスをスキャンしたりできます。 現在のバージョンはBツリーインデックスのみをサポートしています。 グローバル一時テーブルのテーブルレベルおよび列レベルの統計は、統計で使用されるデータを生成するセッションにもプライベートです。 これにより、グローバル一時テーブル内のクエリのクエリプランが最適化されます。

  • グローバルな一時テーブルは、手動による真空をサポートし、操作を分析して、ジャンクデータをクリアし、統計を収集します。

create global temp table gtt1(a int primary key, b text); #Creates a global temporary table named gtt1. By default, the global temporary table supports ON COMMIT DELETE ROWS. You can use ON COMMIT DELETE ROWS to delete all data from the global temporary table after the current transaction is committed. 
create global temporary table gtt2(a int primary key, b text) on commit delete rows; #Creates a global temporary table named gtt2 and specifies ON COMMIT DELETE ROWS to delete all data from the global temporary table after the current transaction is committed. 
create global temp table gtt3(a int primary key, b text) on commit PRESERVE rows; #Creates a global temporary table named gtt3 and specifies ON COMMIT PRESERVE ROWS to retain all data from the global temporary table after the current transaction is committed. 

操作

PolarDB for Oracleは、グローバル一時テーブルに使用できる関数のグループを提供します。

  • polar_gtt_attached_pidは、グローバル一時テーブルを使用しているセッションを表示するために使用されます。 この機能は、運用およびメンテナンス中に他の機能と組み合わせることができます。

  • polar_gtt_att_statisticは、グローバル一時テーブルの列レベルの統計を表示するために使用されます。

  • polar_gtt_relstatsは、グローバル一時テーブルのテーブルレベルの統計を表示するために使用されます。

これらの機能はプラグインとして機能します。 これらの関数を使用する前に、プラグインを作成する必要があります。

create extension polar_gtt;

グローバル一時テーブルを削除するには、グローバル一時テーブルが現在のセッションでのみ使用されていることを確認する必要があります。

以下の手順を実行します。

  1. polar_gtt_attached_pidを使用して、グローバル一時テーブルを使用しているセッションを照会します。

  2. pg_backend_pid() を使用して、現在のセッションのプロセスID (pid) を取得します。

  3. pg_terminate_backend(pid) を使用して、現在以外のセッションを終了します。

  4. DROP TABLEステートメントを実行して、グローバル一時テーブルを削除します。