Question

Je n’ai jamais utilisé les tables temporaires globales, mais j’ai quelques questions sur leur fonctionnement dans un environnement php.

Comment les données sont-elles partagées? Dans l'hypothèse de connexions persistantes à Oracle via Php en utilisant oci8. Les données sont-elles liées à un identifiant de base de données? est-ce fait basé sur les démons Apache httpd? Ou chaque demande individuelle est-elle unique?

Quand les données de la session sont-elles effacées de la table temporaire globale? Je suppose (ou plutôt espère) que cela est fait lorsque le script php se termine. Sinon, je suppose que je devrai le supprimer avant de quitter le script.

Était-ce utile?

La solution

La table temporaire globale est simplement la définition logique d'une structure de table (nom, noms de colonne, types de données de colonne, etc.). Lorsqu'une session la référence en insérant des données, un segment de données est créé dans un espace de table temporaire pour contenir uniquement les données de cette session. Différentes sessions peuvent donc référencer la même définition de table logique car elles ont chacune leur propre segment de données dédié qui peut être purgé facilement lors de la validation ou lorsque la session se déconnecte sans affecter les autres sessions.

La purge des données dans le GTT peut être en cours de validation ou à la fin de la session, en fonction de l'option avec laquelle elle a été créée. Dans les deux cas, vous n'avez pas à vous occuper de la purge avant de vous déconnecter.

Une clause utile à la GTT est la clause de factorisation de sous-requête ("WITH"), dans laquelle vous pouvez créer plusieurs relations pouvant faire référence à celles précédemment déclarées dans cette instruction SQL. Ceux-ci peuvent être matérialisés en tant que segment de données dans un espace de table temporaire, soit automatiquement par Oracle lorsqu'ils dépassent une certaine utilisation de la mémoire, soit manuellement à l'aide de l'indicateur d'optimisation MATERIALIZE.

Autres conseils

Si je me souviens bien, les données des tables temporaires globales ne sont disponibles que depuis une session active et uniquement pour cette session active (je veux dire session = connexion). Ainsi, vous ne pouvez voir que les données insérées auparavant en session active. Par conséquent, je crois, ces données sont effacées après la fermeture de la session. Quelle que soit la langue que vous utilisez.

Au moins je le pense. : D

Comme il est écrit ici: http://www.oracle-base.com/articles/8i/TemporaryTables. php

Les données d'une table temporaire globale sont privées, de sorte que les données insérées par une session ne sont accessibles que par cette session.

Les données des tables temporaires sont automatiquement supprimées à la fin de la session de la base de données, même si elles se terminent de manière anormale.

Désolé pour mon mauvais anglais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top