Oracle Global Temporäre Tabelle/PHP Interaktion Frage


0

Ich habe noch nie die Global Temporäre Tabellen verwendet, aber ich habe einige Fragen, wie sie in einer PHP-Umgebung arbeiten werden.

Wie Daten geteilt werden: Angenommen dauerhafte Verbindungen zu Oracle durch PHP mit oci8. Sind die Daten an eine Datenbank-ID gebunden? ist es auf der Grundlage der Apache httpd Dämonen getan? Oder ist jede individuelle Anfrage einzigartig?

Wann werden die Daten für die Sitzung aus der globalen temporären Tabelle gelöscht? Ich gehe davon aus (oder hoffe eher), dass es fertig ist, wenn das PHP-Skript beendet wird. Alternativ nehme ich an, dass ich es vor dem Beenden des Skripts entfernen muss.

3

Die globale temporäre Tabelle ist einfach die logische Definition einer Tabellenstruktur (Name, Spaltennamen, Spaltendatentypen usw.). Wenn eine Sitzung durch Einfügen von Daten darauf verweist, wird in einem temporären Tablespace ein Datensegment erstellt, das nur die Daten dieser Sitzung enthält. Unterschiedliche Sitzungen können daher auf die gleiche logische Tabellendefinition verweisen, da sie jeweils ihr eigenes dediziertes Datensegment haben, das beim Commit oder beim Trennen der Sitzung ohne Auswirkungen auf andere Sitzungen leicht gelöscht werden kann.

Die Bereinigung der Daten in der GTT kann entweder auf Festschreibung oder wenn die Sitzung endet, abhängig von der Option, mit der es erstellt wurde. In beiden Fällen müssen Sie sich vor dem Trennen nicht selbst reinigen.

Eine nützliche Alternative zur GTT ist die Subquery Factoring-Klausel ("WITH"), in der Sie mehrere Relationen erstellen können, die auf die zuvor in dieser SQL-Anweisung deklarierten Relationen verweisen können. Diese können als Datensegment in einem temporären Tablespace entweder automatisch von Oracle materialisiert werden, wenn sie eine bestimmte Speicherbelegung überschreiten, oder manuell mithilfe des MATERIALIZE-Optimierungshinweises.


1

Wenn ich mich richtig erinnere, sind die Daten in globalen temporären Tabellen nur von einer aktiven Sitzung und nur für diese aktive Sitzung verfügbar (ich meine Sitzung = Verbindung). Sie können also nur Daten sehen, die zuvor in der aktiven Sitzung eingefügt wurden. Daher glaube ich, diese Daten werden nach der Schlusssitzung gelöscht. Egal welche Sprache du benutzt.

Zumindest denke ich so. : D

Wie es hier geschrieben steht: http://www.oracle-base.com/articles/8i/TemporaryTables.php

Die Daten in einer globalen temporären Tabelle ist privat, so dass von einer Sitzung eingefügte Daten können nur von dieser Sitzung zugegriffen werden.

Daten in temporären Tabellen werden am Ende der Datenbanksitzung automatisch gelöscht, auch wenn sie abnormal enden.

Sorry für mein schlechtes Englisch.