0

グローバル一時テーブルを使用したことはありませんが、php 環境でどのように機能するかについていくつか質問があります。

データはどのように共有されますか: oci8 を使用して php を介して oracle に永続的に接続することを前提としています。データはデータベース ID に関連付けられていますか? Apache httpd デーモンに基づいて実行されますか? それとも、個々のリクエストはそれぞれ固有のものですか?

セッションのデータがグローバル一時テーブルから消去されるのはいつですか? 私は、phpスクリプトが終了したときにそれが完了すると想定しています(またはむしろ望んでいます)。そうでない場合は、スクリプトを終了する前に削除する必要があると思います。

4

2 に答える 2

3

グローバル一時テーブルは、単純にテーブル構造 (名前、列名、列のデータ型など) の論理的な定義です。セッションがデータを挿入して参照すると、一時表領域にデータ セグメントが作成され、そのセッションのデータのみが保持されます。したがって、異なるセッションは同じ論理テーブル定義を参照できます。これは、コミット時またはセッションが切断されたときに、他のセッションに影響を与えずに簡単にパージできる独自の専用データ セグメントがあるためです。

GTT 内のデータのパージは、作成時のオプションに応じて、コミット時またはセッション終了時のいずれかになります。いずれの場合も、接続を切断する前に自分でパージする必要はありません。

GTT の便利な代替手段は、サブクエリ ファクタリング句 ("WITH") です。この句では、その SQL ステートメントで以前に宣言されたものを参照できる複数のリレーションを作成できます。これらは、特定のメモリ使用量を超えたときに Oracle によって自動的に、または MATERIALIZE オプティマイザ ヒントを使用して手動で、一時テーブルスペースのデータ セグメントとして具体化できます。

于 2008-09-23T19:15:18.133 に答える
1

私の記憶が正しければ、グローバル一時テーブルのデータは、1つのアクティブなセッションからのみ、このアクティブなセッションでのみ使用できます(つまり、セッション=接続)。したがって、アクティブなセッションで以前に挿入されたデータのみを表示できます。したがって、私は信じています、このデータはセッションを閉じた後にクリアされます。使用している言語に関係なく。

少なくとも私はそう思う。:D

ここに書かれているように: http ://www.oracle-base.com/articles/8i/TemporaryTables.php

グローバル一時テーブルのデータはプライベートであるため、セッションによって挿入されたデータには、そのセッションからのみアクセスできます。

一時テーブルのデータは、異常終了した場合でも、データベースセッションの終了時に自動的に削除されます。

英語が下手でごめんなさい。

于 2008-09-23T19:10:48.080 に答える