Domanda

Non ho mai usato le tabelle temporanee globali, tuttavia ho alcune domande su come funzioneranno in un ambiente php.

Come vengono condivisi i dati: supponendo connessioni persistenti a Oracle tramite PHP usando oci8. I dati sono collegati a un ID database? è fatto in base ai demoni httpd di Apache? O ogni singola richiesta è unica?

Quando vengono cancellati i dati per la sessione dalla tabella temporanea globale? Sto supponendo (o piuttosto sperando) che sia fatto quando esce lo script php. In caso contrario, suppongo che dovrò rimuoverlo prima dell'uscita dallo script.

È stato utile?

Soluzione

La tabella temporanea globale è semplicemente la definizione logica di una struttura di tabella (Nome, nomi di colonna, tipi di dati di colonna ecc.). Quando una sessione fa riferimento inserendo dati, viene creato un segmento di dati in un tablespace temporaneo per contenere solo i dati di quella sessione. Sessioni diverse possono quindi fare riferimento alla stessa definizione di tabella logica perché ognuna ha il proprio segmento di dati dedicato che può essere rimosso facilmente durante il commit o quando la sessione si disconnette senza influire su altre sessioni.

L'eliminazione dei dati nella GTT può essere in commit o al termine della sessione, a seconda dell'opzione con cui sono stati creati. In entrambi i casi non è necessario occuparsi dello spurgo da soli prima di disconnettersi.

Un'utile alternativa alla GTT è la clausola di factoring di subquery (" WITH "), in cui puoi creare relazioni multiple che possono fare riferimento a quelle precedentemente dichiarate in quell'istruzione SQL. Questi possono essere materializzati come un segmento di dati in un tablespace temporaneo automaticamente da Oracle quando superano un determinato utilizzo della memoria o manualmente utilizzando il suggerimento dell'ottimizzatore MATERIALIZE.

Altri suggerimenti

Se ricordo bene, i dati nelle tabelle temporanee globali sono disponibili solo da una sessione attiva e solo per questa sessione attiva (intendo sessione = connessione). Quindi puoi vedere solo i dati che sono stati inseriti in precedenza nella sessione attiva. Pertanto ritengo che questi dati vengano cancellati dopo la chiusura della sessione. Indipendentemente dalla lingua che stai utilizzando.

Almeno io la penso così. : D

Come è scritto qui: http://www.oracle-base.com/articles/8i/TemporaryTables. php

I dati in una tabella temporanea globale sono privati, pertanto i dati inseriti da una sessione sono accessibili solo da quella sessione.

I dati nelle tabelle temporanee vengono automaticamente eliminati al termine della sessione del database, anche se terminano in modo anomalo.

Ci scusiamo per il mio cattivo inglese.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top